怎么解析出String中的数字
如何解析出String中的数字
比如将一串字符串“1 2 3 4 5 6 7 8 9 12 23 456 .....”中的数字解析出来
String data = " 123 456 4 5 6 6 8 5 2 2 85 2 5 2 5 2 5 0 5 2 ".trim(); System.out.println("首位的空格被取消了"+data.trim()+"首位的空格被取消了"); //统计空格出现次数 char[] c = data.toCharArray();//将字符串转化为字符数组 int count = 0;//用以统计空格出现了多少次 for(char v : c){//循环遍历 if(' ' == v)//一经发现 加一 count++; } //定义输入文本格式 String messageFormat = "{0,number,integer}";//每一个节点值是{编号,内容,类型} for(int i=0; i<count; i++){//开始根据空格数定义格式 messageFormat += " {"+(i+1)+",number,integer}"; } System.out.println(messageFormat); //解析出数字 Object[] data_values = new MessageFormat(messageFormat).parse(data.trim()); //遍历数字 for (Object v : data_values) System.out.println(v + "(" + v.getClass().getName() + ")");
结果:
首位的空格被取消了123 456 4 5 6 6 8 5 2 2 85 2 5 2 5 2 5 0 5 2首位的空格被取消了 {0,number,integer} {1,number,integer} {2,number,integer} {3,number,integer} {4,number,integer} {5,number,integer} {6,number,integer} {7,number,integer} {8,number,integer} {9,number,integer} {10,number,integer} {11,number,integer} {12,number,integer} {13,number,integer} {14,number,integer} {15,number,integer} {16,number,integer} {17,number,integer} {18,number,integer} {19,number,integer} 123(java.lang.Long) 456(java.lang.Long) 4(java.lang.Long) 5(java.lang.Long) 6(java.lang.Long) 6(java.lang.Long) 8(java.lang.Long) 5(java.lang.Long) 2(java.lang.Long) 2(java.lang.Long) 85(java.lang.Long) 2(java.lang.Long) 5(java.lang.Long) 2(java.lang.Long) 5(java.lang.Long) 2(java.lang.Long) 5(java.lang.Long) 0(java.lang.Long) 5(java.lang.Long) 2(java.lang.Long)
———————————————————————————————————————————————
使用MessageFormat可以解析任意自定义格式的string,很方便哦,如:
String sid = "u1234q5678"; Object[] values = new MessageFormat("u{0,number,integer}q{1,number,integer}").parse(sid); for (Object v : values) System.out.println(v + "(" + v.getClass().getName() + ")");
结果:
1234(java.lang.Long) 5678(java.lang.Long)
1 楼
030710314
1 小时前
为什么不用正则表达式,split(regex)来分词呢?
2 楼
canghailan
14 分钟前
用正则 (\d+) 就OK了
3 楼
canghailan
11 分钟前
public static void main(String[] args) { String data = " 123 456 4 5 6 6 8 5 2 2 85 2 5 2 5 2 5 0 5 2 "; Pattern pattern = Pattern.compile("(\\d+)"); Matcher matcher = pattern.matcher(data); while (matcher.find()) { String number = matcher.group(1); System.out.println(Integer.parseInt(number)); } }