致远表单函数自定义-groovy代码:阿拉伯数字转大写汉字

在致远表单设计中,为实现将阿拉伯数字转为大写汉字,通过参考大神的算法和致远表单设计方法,将算法以groovy语言实现出来,下面作以分享:

算法思路:先将数字逐字转换为汉字数字和汉字单位,再将挨着个位、万位、亿位前的所有零和单位都剔除掉;未挨着个位、万位、亿位前的连续零和单位仅保留最低一位为零,其他均剔除。最后还发现,如果亿和万之间数字均为零,则需删除万位,比如一亿万要把万字删掉才能得出正确结果一亿。

操作步骤:

①表单中分别添加一个数字控件和一个文本控件,主要实现数字控件中的数字以大写汉字的格式自动显示在文本控件中;

②选中文本控件,点击右侧控件属性的计算公式,点击函数自定义,新建函数,参数设置选择数字控件的数据域名,代码框中填写groovy代码,保存即可。

代码内容:

//阿拉伯数字转大写汉字,最高位数一仟万亿,groovy语言

String abs=param[0];   //读取阿拉伯数字

ch_number=[1:"壹",2:"贰",3:"叁",4:"肆",5:"伍",6:"陆",7:"柒",8:"捌",9:"玖",0:"零"];
ch_unit =["","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"];

l=abs.length()-1;
ch =[]; //汉字数组
i=0
def absz=abs as String[];   //转换阿拉伯数字数组


//数字逐位转换为对应的汉字
for (i in absz){
    j =i as int;
    ch.add(ch_number[j]);
    ch.add(ch_unit[l]);
    l-=1;
}


//算法开始:思路-挨着空、万、亿前的所有的零和单位均剔除;未挨着空、万、亿前的连续零和单位仅保持最低一位为零,其他均剔除

//把所有0及0后除空、万、亿以外的单位替换为x
k=ch.size()-1;
for(k;k>0;k=k-2){
    if(ch[k-1]=="零")ch[k-1]="x";
    if(ch[k-1]=="x" && ch[k]!="" && ch[k]!="万" && ch[k] !="亿")ch[k]="x";
}

//把挨着空、万、亿前所有的x替换为y
k = ch.size()- 1;
for(k;k>0;k=k-1){
    if( ((ch[k]=="" || ch[k]=="万" || ch[k]=="亿") && ch[k-1] =="x") || (ch[k]=="y" && ch[k-1]=="x"))ch[k-1]="y";
}

//把连续的x的最低一位x替换为零
k=ch.size()-2;
for(k;k>0;k=k-1){
    if(ch[k]=="x" && ch[k+1]!="零" && ch[k+1]!="x")ch[k]="零";
}

//算法结束


//如果亿和万之间数字均为零,则需删除万的单位,比如一亿万要把万字删掉
k= ch.size();
if(k>=18 && ch[k-16]=="y"&& ch[k-14]=="y" && ch[k-12] =="y")ch[k-9] ="x";


String dxh ="";    //定义大写汉字字符串

i=0;
//将汉字数组转换为字符串写入dxh字符串中
for (i; i<ch.size();i++){
    if(ch[i]!="x" && ch[i]!="y")dxh=dxh+ch.get(i);
}

return dxh;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Running in Durability level: MAX_SURVIVABILITY [2023-06-02 14:07:25] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: [2023-06-02 14:07:25] WorkflowScript: 26: No steps specified for branch @ line 26, column 13. [2023-06-02 14:07:25] steps { [2023-06-02 14:07:25] ^ [2023-06-02 14:07:25] [2023-06-02 14:07:25] 1 error [2023-06-02 14:07:25] [2023-06-02 14:07:25] at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310) [2023-06-02 14:07:25] at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085) [2023-06-02 14:07:25] at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603) [2023-06-02 14:07:25] at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581) [2023-06-02 14:07:25] at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558) [2023-06-02 14:07:25] at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) [2023-06-02 14:07:25] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) [2023-06-02 14:07:25] at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688) [2023-06-02 14:07:25] at groovy.lang.GroovyShell.parse(GroovyShell.java:700) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:142) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:127) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:571) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:523) [2023-06-02 14:07:25] at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:327) [2023-06-02 14:07:25] at hudson.model.ResourceController.execute(ResourceController.java:100) [2023-06-02 14:07:25] at hudson.model.Executor.run(Executor.java:433) [2023-06-02 14:07:25] Finished: FAILURE
06-03

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值