pol*_*nts 79
将所有非数字替换为空白:剩余的字符串仅包含数字.
Integer.parseInt(s.replaceAll("[\\D]", ""))
Run Code Online (Sandbox Code Playgroud)
这也将删除数字之间的非数字,因此"x1x1x"变为11.
如果您需要确认该字符串由一系列数字(至少一个)可能跟随一个字母组成,那么使用:
s.matches("[\\d]+[A-Za-z]?")
Run Code Online (Sandbox Code Playgroud)
jar*_*bjo 21
NumberFormat类只解析字符串,直到它到达不可解析的字符:
((Number)NumberFormat.getInstance().parse("123e")).intValue()
Run Code Online (Sandbox Code Playgroud)
因此将返回123.
Uri*_*Uri 10
除非您在讨论基数为16的数字(有一种方法可以解析为Hex),否则您需要明确地分离出您感兴趣的部分,然后将其转换.毕竟,基数为10的23e44e11d的语义是什么?
如果您确定只有一个数字,正则表达式可以解决问题.Java有一个内置的正则表达式解析器.
另一方面,如果您的目标是连接所有数字并转储alpha,那么通过逐个字符迭代来构建StringBuilder的字符串,然后解析那个数字,这是相当简单的.
只需遍历字符串,像往常一样构建一个 int,但忽略非数字字符:
int res = 0;
for (int i=0; i < str.length(); i++) {
char c = s.charAt(i);
if (c < '0' || c > '9') continue;
res = res * 10 + (c - '0');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
140401 次 |
| 最近记录: |