【发布时间】:2013-06-09 04:29:21
【问题描述】:
我有一个字符串,例如"ksl13<br>m4n",我想删除所有非数字字符以获得 int 134。
Integer.parseInt(s) 显然是行不通的,但不知道该怎么办。
【问题讨论】:
-
使用类
Pattern或String#replaceAll(String, String)。
标签: java string parsing int parseint
我有一个字符串,例如"ksl13<br>m4n",我想删除所有非数字字符以获得 int 134。
Integer.parseInt(s) 显然是行不通的,但不知道该怎么办。
【问题讨论】:
Pattern或String#replaceAll(String, String)。
标签: java string parsing int parseint
您可以先使用正则表达式:
String s = "ksl13 m4n";
String clean = s.replaceAll("\\D+",""); //remove non-digits
那么你可以使用Integer.parseInt:
int i = Integer.parseInt(clean);
而i 将是134。
【讨论】:
\\D+ 将删除不属于以下项之一的任何内容:0123456789。
\\D+ 等价于[a-z|A-Z],表示替换除小数以外的所有字符?
\\D+ 等价于[^0-9]+
如果你不想使用正则表达式,你可以这样做:
private String buildNumber(String str) {
StringBuilder strBuilder = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if(Character.isDigit(ch))
strBuilder.append(ch);
}
return strBuilder.toString();
}
然后您可以使用Integer#parseInt 将其转换为int。
有关更多信息,请参阅 StringBuilder 和 Character。
【讨论】:
Character.isDigit 比正则表达式中的\d 更广泛,因为它可以匹配国际数字字符 (source)。
>'0' && <'9' 轻松检查 0-9 数字。
字符串 str = "ksl13 m4n";
字符串 strArray[] = str.split("\D+");将为您提供整数值数组
【讨论】: