我的意思是一个string
String str = "123、4567/885*54666+8874 ”
这样不规则的一个string
怎样将非数字的字符取出当做分隔符 。
取出数字组成数组
类似这样 String arr[] = {123,4567,885,54666,8874}这样的结果。
请大侠们停留一下脚步。
非数字
String.split("[^\d]");
[code="java"] String str = "123、4567/885*54666+8874";
String[] strs = str.trim().split("[、/*+_a-z|A-Z]");
for(int i=0;i<strs.length;i++){
System.out.println(strs[i]);
}[/code]
如此应该算简单,性能也比较优一点:
[code="java"] public static BigInteger trimToNumber(String s) {
int n = s.length();
char[] a = new char[n];
int len = 0;
for (int i = 0; i < n; i++) {
char ch = s.charAt(i);
if (ch >= '0' && ch <= '9') {
a[len++] = ch;
}
}
return new BigInteger(new String(a, 0, len));
}
public static void main(String[] args) {
String str = "123、4567/885*54666+8874";
BigInteger n = trimToNumber(str);
System.out.println(n);
}[/code]
String.split("\D");
正则表达式是一个很明智的选择。非数字\D
用String[] str = String.split("\D");来分割字符串,数组str即为数字组成的数组,在把数字字符串转数组str的每一项化为数字.
代码如下 用正则表达式匹配 str.split("正则表达式"); 里面过滤掉你需要用的东西 代码如下 能运行
public class StringRegTest {
public static void main(String[] args) {
String str = "123.456/6688*55+00";
String[] arr = str.split("[./*\\+]");
for(String s : arr) {
System.out.println(s);
}
}
}