在String中提取整数部分

Ver*_*gen 19 java string parsing integer java.util.scanner

提取字符串的整数部分的最佳方法是什么

Hello123
Run Code Online (Sandbox Code Playgroud)

你如何获得123部分.您可以使用Java的Scanner来破解它,有更好的方法吗?

Asc*_*ian 32

如前所述,请尝试使用正则表达式.这应该有助于:

String value = "Hello123";
String intValue = value.replaceAll("[^0-9]", ""); // returns 123
Run Code Online (Sandbox Code Playgroud)

然后你只需从那里转换为int(或整数).


Bri*_*den 25

我相信你可以这样做:

Scanner in = new Scanner("Hello123").useDelimiter("[^0-9]+");
int integer = in.nextInt();
Run Code Online (Sandbox Code Playgroud)

编辑:添加了Carlos的useDelimiter建议

  • `nextInt`的文档声明"如果下一个标记无法转换为有效的int,则此方法将抛出InputMismatchException",这是"Hello123"的情况.可以使用`in.useDelimiter("[^ 0-9] +");`来*忽略*非数字 (2认同)

Cro*_*bot 8

为什么不使用正则表达式来匹配您想要的字符串部分?

[0-9]
Run Code Online (Sandbox Code Playgroud)

这就是你所需要的,加上它所需要的任何周围的字符.

请查看http://www.regular-expressions.info/tutorial.html以了解正则表达式的工作原理.

编辑:我想说Regex对于这个例子可能有点过分,如果其他提交者发布的代码确实有用......但我仍然建议学习Regex,因为它们非常强大,并且比我愿意承认的更方便(在等了好几年才给他们开枪).

  • 或者`\ d` 15chars (3认同)