我有一个文字字符串“9926 9928 9951 9953 0 30 57 12 40 54 30”
我对4位数字感兴趣,前缀为99.其他数字是多余的。
期望的输出:
9926
9928
9951
9953
我的代码:
String str = " 9926 9928 9951 9953 0 30 57 12 40 54 30";
Iterable<String> result = Splitter.onPattern("99").fixedLength(4).split(str);
实际输出:
992
6 99
28 9
951
9953
0 3
0 57
12
40 5
4 30
答案 0 :(得分:4)
将Matcher
与正则表达式99\d{2}
:
String str = " 9926 9928 9951 9953 0 30 57 12 40 54 30";
Matcher m = Pattern.compile("99\\d{2}").matcher(str);
while (m.find())
System.out.println(m.group());
9926 9928 9951 9953
另请参阅:Pattern
请注意,在正则表达式\d
中,predefined character class相当于[0-9]
。此外,{2}
是quantifier,意思是“先前,两次”。因此,99\d{2}
匹配两个9
s后跟两个任意数字:
如果您要使用许多不同的字符串执行此操作,请考虑预编译正则表达式并将Pattern
实例存储在某个static final
变量中,只要您想要执行操作
答案 1 :(得分:1)
您可以使用以下算法来完成您的工作。
whitespace
字符上拆分字符串。 startsWith()
方法,然后它就是您需要的数字。