java String 取出非数字的字符 并将剩下的数字组成数字

我的意思是一个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);
    }
}

}