从String中提取数字

时间:2015-05-07 10:25:54

标签: java

我有一个包含数字和文字的大字符串。 现在我想要一个来自该字符串的数字。 每次使用' 6'和三个' 0'但那么数字可以是不同的数字。 例如,这是一个尝试:

String text1 = "ID 6 IDENTIFICATION NUMBER 600026821 NAME: BECK POSTCODE 60025";

if(text1.contains("6000"))
    {
      System.out.println(text1.indexOf("6000"));

    }

因此您可以看到String还可以包含邮政编码数字和ID。 但我想要的数字总是相同的9位长度,并以' 6000 ...'开头。

那么我怎样才能提取这个数字?

由于

修改

好的,我现在试试这个:

String index = "6000";
            String text1 = "ID 6 IDENTIFICATION NUMBER 600026821 NAME BECK POSTCODE 60025";

            System.out.println(text1.indexOf(index));



            String number = text1.substring(text1.indexOf(index), text1.lastIndexOf(text1.indexOf(index) + 5));
            System.out.println(number);

它开始但结束不正确

5 个答案:

答案 0 :(得分:5)

正则表达式可以像这样使用:

public static void main(String args[]) {
    String text1 = "ID 6 IDENTIFICATION NUMBER 600026821 NAME: BECK POSTCODE 60025";
    System.out.println(text1.replaceAll(".*?\\b(6000\\d+)\\b.*", "$1")); // replace everything except a number that starts with 6 and is followed by 000 with "".

}

O / P:

600026821

注意:如果您确定位数为(6000\\d{5}),则可以使用(6000\\d+)代替9

答案 1 :(得分:3)

for (String word : s.split(" ")) {
    int number = 0;
    if (word.startsWith("6000"))
        number = Integer.parseInt(word);
    }
}

修改

我没看到你想要的号码总是长度为9.在这种情况下,请检查if条件下的长度:

if (word.startsWith("6000") && word.length() == 9)

答案 2 :(得分:1)

就像那样:

System.out.println(text1.substring(text1.indexOf("6000"),text1 .indexOf("6000")+9));

int value=Integer.parseInt(text1.substring(text1.indexOf("6000"),text1 .indexOf("6000")+9));

答案 3 :(得分:0)

获得" 6000"的索引后继续,你已经说过长度总是9

int start = text1.indexOf("6000");
String yourNumber = text1.substring(start, start+10);

答案 4 :(得分:0)

您可以这样做,以获取该字符串中符合您规则的所有数字。请注意,为了测试目的,我向text1添加了一些数字。

package so;

public class NumberExtractor {

    public static void main(String[] args) {

        String text1 = "ID 6 IDENTIFICATION NUMBER 600026821 NAME: BECK 600026822600026823 POSTCODE 60002682460025";

        boolean notAtTheEnd = true;
        int currentIndex = 0;
        while (notAtTheEnd) {
            int start = text1.indexOf("6000", currentIndex);

            if (start > -1) {
                String number = text1.substring(start, start + 9);
                currentIndex = start + 1;
                System.out.println(number);
            } else {
                notAtTheEnd = false;
            }
        }
    }
}