Java分裂数字

时间:2014-03-03 20:36:47

标签: java regex string

我在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

我该如何解决这个问题?

2 个答案:

答案 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. 找到'_'
  2. 的最后一个实例
  3. 将字符串剪切回来,从数字的开头
  4. 开始
  5. 找到第一个''的位置(现在将在您需要的数字之后)
  6. 将字符串向下切割到空格之前并转换为整数。

答案 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));