java 阿拉伯+ 中文字符串 转纯数字的方法
Java中字符串包含阿拉伯数字和中文数字的情况比较常见,但有时需要将这些混合的数字字符串转成纯数字格式,以便进行数值计算或比较大小等操作。
以下是一种 Java 实现方法,可以将包含阿拉伯数字和中文数字的字符串转换为对应的纯数字形式:
1. 首先定义一个方法,接收一个包含阿拉伯数字和中文数字的字符串作为参数,并返回对应的纯数字字符串。方法的返回类型为 String。
public static String convertToPureNumber(String str) {
// 方法体
}
2. 在方法体中,先对字符串进行去空格操作。
str = im();
3. 然后定义一个 Map,用于存储中文数字和对应的阿拉伯数字。将数字从小到大依次放入 Map 中,例如:
Map<String, Integer> map = new HashMap<>();
map.put('零', 0);
map.put('一', 1);
map.put('二', 2);
map.put('三', 3);
map.put('四', 4);
map.put('五', 5);
map.put('六', 6);
map.put('七', 7);
map.put('八', 8);
map.put('九', 9);
map.put('十', 10);
map.put('百', 100);
map.put('千', 1000);
map.put('万', 10000);
map.put('亿', 100000000);
4. 接下来使用正则表达式匹配字符串中的数字,将匹配到的数字转为对应的纯数字格式,例如:
Pattern pattern = Patternpile('(d+|[一二三四五六七八九十百千万亿]+)');
Matcher matcher = pattern.matcher(str);
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
String group = up(1);
if (group.matches('d+')) {
sb.append(group);
} else {
int num = 0;
int lastNum = 1;
for (int i = 0; i < group.length(); i++) {
int n = (String.valueOf(group.charAt(i)));
if (n < 10) {
lastNum = n;
} else if (n < 100) {
num += lastNum * n;
lastNum = 0;
} else {
num += lastNum * n;
lastNum = 1;
}
}
sb.append(num + lastNum);
}
}
5. 最后返回转换后的纯数字字符串。
String();正则匹配空字符串
完整代码如下:
public static String convertToPureNumber(String str) {
str = im();
Map<String, Integer> map = new HashMap<>();
map.put('零', 0);
map.put('一', 1);
map.put('二', 2);
map.put('三', 3);
map.put('四', 4);
map.put('五', 5);
map.put('六', 6);
map.put('七', 7);
map.put('八', 8);
map.put('九', 9);
map.put('十', 10);
map.put('百', 100);
map.put('千', 1000);
map.put('万', 10000);
map.put('亿', 100000000);
Pattern pattern = Patternpile('(d+|[一二三四五六七八九十百千万亿]+)');
Matcher matcher = pattern.matcher(str);
StringBuilder sb = new StringBuilder();
while (matcher.find()) {
String group = up(1);
if (group.matches('d+')) {
sb.append(group);
} else {
int num = 0;
int lastNum = 1;
for (int i = 0; i < group.length(); i++) {
int n = (String.valueOf(group.charAt(i)));
if (n < 10) {
lastNum = n;
} else if (n < 100) {
num += lastNum * n;
lastNum = 0;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论