我有一个包含数字和文字的大字符串。 现在我想要一个来自该字符串的数字。 每次使用' 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);
它开始但结束不正确
答案 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;
}
}
}
}