如何仅从输入字符串中提取数值?
例如,输入字符串可能如下所示:
String str="abc d 1234567890pqr 54897";
Run Code Online (Sandbox Code Playgroud)
我只想要数值ie,"1234567890"和"54897".所有字母和特殊字符都将被丢弃.
npi*_*nti 22
您可以使用该类中的.nextInt()方法Scanner:
将输入的下一个标记扫描为int.
或者,您也可以这样做:
String str=" abc d 1234567890pqr 54897";
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher(str);
while(m.find())
{
System.out.println(m.group(1));
}
Run Code Online (Sandbox Code Playgroud)
tbl*_*tbl 11
String str=" abc d 1234567890pqr 54897";
Pattern pattern = Pattern.compile("\\w+([0-9]+)\\w+([0-9]+)");
Matcher matcher = pattern.matcher(str);
for(int i = 0 ; i < matcher.groupCount(); i++) {
matcher.find();
System.out.println(matcher.group());
}
Run Code Online (Sandbox Code Playgroud)
使用yourString.toCharArray();Then 将字符串拆分为char数组然后遍历字符并使用Character.isDigit(ch);以确定这是否为数值.或者遍历整个字符串并使用str.charAt(i).例如:
public static void main(String[] args) {
String str = "abc d 1234567890pqr 54897";
StringBuilder myNumbers = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (Character.isDigit(str.charAt(i))) {
myNumbers.append(str.charAt(i));
System.out.println(str.charAt(i) + " is a digit.");
} else {
System.out.println(str.charAt(i) + " not a digit.");
}
}
System.out.println("Your numbers: " + myNumbers.toString());
}
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
Matcher m = Pattern.compile("\\d+").matcher(str);
while (m.find()) {
System.out.println(m.group(0));
}
Run Code Online (Sandbox Code Playgroud)