admin管理员组

文章数量:814300

unicode中文数字与阿拉伯数字转换

一不小心,接触到js与java后台了,功能最终要的结果是每次添加同一个类别的数据的时候在类别的后面添加一个中文的数字,取的是数据库里面的最大值加1;

分析:

1.js获取的数据将从后台获取,后台将从数据库中获取,问题来了,数据库存中文数字的时候将无法确定最大数值,因为如果通过计算机进行比较,有点麻烦,得出结论是在苦中存unicode;

2.java获取的类别名称取出unicode数值,通过正则匹配到具体数值;

3.利用数组特性,取0-9 10个数据做数据类型是string类型,下标0是unicode的“零”,类推。。。

4.js返回到后台的是阿拉伯数字,如10,11,这时候就要将其装箱城string然后遍历上面定义的数组,再拼接,这样就实现了转换(或者在js中每次加1再做转换,原理一样);

 

补充一下:计算机可以比较两个unicode中文字符的大小的,但是比较大写的数字的时候有点麻烦,笔画不一样;

 

java转换主要代码:

 

//正则匹配"()"表达式

private static final String regexString=".*?\\((.*?)\\).*?";

返回给js:

public R getAlia(String alias,String path){String []arr=new String[]{"零","一", "二", "三", "四", "五", "六", "七","八", "九"};path=map.get(path);String ss=path+File.separator+alias;EntityWrapper entityWrapper1=new EntityWrapper();entityWrapper1.setEntity(new DtxmwjEntity());entityWrapper1.where("wjmlmc={0}",ss);DtxmwjEntity dtxmwjEntity = dtxmwjService.selectOne(entityWrapper1);if (dtxmwjEntity==null){return R.error(1,"不存在");}EntityWrapper entityWrapper=new EntityWrapper();entityWrapper.setEntity(new DtwjxxEntity());entityWrapper.where("xmwjid={0}",dtxmwjEntity.getXmwjid());entityWrapper.like(StringUtils.isNotBlank(alias), "wjtm", alias);List<DtwjxxEntity> list = dtwjxxService.selectList(entityWrapper);if (list==null){return R.error(1,"不存在");}//集合都是数据结构+算法List<String>list1=new ArrayList<>();List<Integer>list2=new ArrayList<>();Pattern pattern1 = Pattern.compile(regexString);for (int a=0;a<list.size();a++){String wjtm = list.get(a).getWjtm();//上面的都是浮云,这里是最主要的正则匹配到中文数字Matcher matcher1 = pattern1.matcher(wjtm);if (matcher1.matches()){list1.add(matcher1.group(1));}else {list1.add("零");}}for (int a=0;a<list1.size();a++){String s=list1.get(a);StringBuilder stringBuilder=new StringBuilder();for (int c=0;c<s.length();c++){for (int d=0;d<arr.length;d++){if ((s.charAt(c)+"").equals(arr[d])){stringBuilder.append(d);}}}int i = Integer.parseInt(stringBuilder.toString());list2.add(i);}int max = Collections.max(list2);return R.ok().put("max",max);}

 

 

 

本文标签: unicode中文数字与阿拉伯数字转换