使用Google Guava获取字符串的前导数字

时间:2012-11-04 20:01:25

标签: java guava

基本上,我有一些像

这样的字符串
5 - Avenue Rd
9 - Bellamy
21 - Brimley
191 - Highway 27 Rocket

等等。我正在寻找使用Google Guava返回开头数字的方法。根据我的研究:

  • CharMatcher.DIGIT.retainFrom很不错,但我想让它停在第一个非数字字符处。
  • CharMatcher.DIGIT.trimLeadingFrom几乎是我想要的,除了它返回字符串的另一部分,我想要一串数字。

有什么想法吗?

编辑:又添了一个例子。

上述四个例子的预期输出:

5
9
21
191

2 个答案:

答案 0 :(得分:4)

不太相同,但

CharMatcher.DIGIT.negate().trimTrailingFrom(string);

或者 - 更多涉及,但这将适用于中间数字 -

string.substring(0, CharMatcher.DIGIT.negate().indexIn(string));

或者,使用正则表达式,尽管有所有开销 -

string.replaceAll("^(\\d+).*$", "$1")

答案 1 :(得分:1)

为什么不只是split()“ - ”符号上的字符串,然后是trim()并解析......

String test ="5 - Avenue Rd";
String[] out = test.split("-");
System.out.println(out[0].trim());

我们不需要一个框架来做到这一点。