我在java中有一个字符串,如:
"Corrected Acceleration 20130816_053116_RCS2_21 GNS Science"
我希望得到数字序列的最后一部分。它是最后一个下划线之后的数字。
在这种情况下:
21
更多例子
"Corrected Acceleration 20130346_053116_RCS2_15 GNS Science"
想要15
"Corrected Acceleration 20130346_053116_RCS2_13 GNS Science"
想要13
"Acceleration 123214_05312323_RCS2_40 GNS Science"
想要40
此格式将保持不变。变体将是不同的数字,并且可能缺少前子串Corrected
。
我该如何解决这个问题?
答案 0 :(得分:1)
这应该得到你所需要的。请记住我没有测试过这个,但逻辑应该有效:
String test = "Corrected Acceleration 20130816_053116_RCS2_21 GNS Science";
int lastUnderScore = test.lastIndexOf("_");
test = test.substring(lastUnderScore + 1);
int numLength = test.indexOf(" ");
int number = Integer.valueOf(test.substring(0, numLength));
答案 1 :(得分:1)
你可以使用这样的正则表达式:
Pattern pattern = Pattern.compile("_[0-9]+ ");
Matcher matcher = pattern.matcher(text);
matcher.find();
// Note the + 1 and - 1 here to get rid of the leading underscore and the trailing space
int number = Integer.parseInt(text.subString(matcher.start() + 1, matcher.end() - 1));