如何从复杂的字符串中提取整数?

时间:2014-08-14 20:34:09

标签: java

我很难搞清楚。说我有像这样的字符串

字符串s可以等于

s =“{1,4,204,3}”

在另一个时间它可以等于

s =“& 5,3,5,20&”

或者它可以在另一个时间相等

s =“/ 4,2,41,23 /”

有没有办法可以从这个字符串中提取数字并制作一个char数组?

6 个答案:

答案 0 :(得分:2)

您可以在此示例中使用正则表达式:

String s = "&5,3,5,20&";
System.out.println(s.replaceAll("[^0-9,]", ""));

<强>结果:

5,3,5,20

它将替换除数字和逗号之外的所有非单词。如果你想提取所有数字,你可以调用split方法 - &gt; String [] sArray = s.split(",");并迭代到所有数组以提取逗号之间的所有数字。

答案 1 :(得分:2)

您可以使用RegEx并从字符串中提取所有数字。

stringWithOnlyNumbers = str.replaceAll("[^\\d,]+","");

在此之后你可以使用split()使用deliminator&#39;,&#39;获取数组中的数字。

答案 2 :(得分:0)

我认为使用replace()的split()必须帮助你

答案 3 :(得分:0)

从你的情况来看,如果字符串的模式在所有情况下都相同,那么下面的内容就可以了,检查是否有任何例外,这里没有提到:

String[]  sArr= s.split(",");
sArr[0] = sArr[0].substring(1);
sArr[sArr.length()-1] =sArr[sArr.length()-1].substring(0,sArr[sArr.length()-1].length()-1);

然后将String []转换为char [],here是一个示例转换器方法

答案 4 :(得分:0)

使用正则表达式

    String a = "asdf4sdf5323ki";
    String regex = "([0-9]*)";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(a);
    while (matcher.find())
    {
        String group = matcher.group(1);
        if (group.length() > 0)
        {
            System.out.println(group);
        }
    }

答案 5 :(得分:0)

您可以将Scanner课程与,分隔符

一起使用
String s = "{1,4,204,3}";

Scanner in = new Scanner(s.substring(1, s.length() - 1)); // Will scan the 1,4,204,3 part

in.useDelimiter(",");

while(in.hasNextInt()){
   int x = in.nextInt();
   System.out.print(x + " ");

   // do something with x
}

以上将打印:

1 4 204 3