如何从输入字符串中提取数字值?
例如,输入字符串可能是这样的:
String str="abc d 1234567890pqr 54897";
我只想要数字值,例如"1234567890"
和"54897"
。所有的字母和特殊字符都将被丢弃。
Scanner
类中的.nextInt()
方法:
另外,你也可以这样做:将输入的下一个标记扫描为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));
}
\\d+
表示正则表达式语言中的一位或多位数字,与字母 d
没有关系(至少在这种情况下是这样)。 - npintiString 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());
}
使用yourString.toCharArray();
将您的字符串分割为字符数组,然后遍历这些字符并使用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());
}
你可以尝试以下方法:
Matcher m = Pattern.compile("\\d+").matcher(str);
while (m.find()) {
System.out.println(m.group(0));
}
如果您不想使用正则表达式,
String str = " abc d 1234567890pqr 54897";
char[] chars = new char[str.length()];
int i = 0;
for (int j = 0; j < str.length(); j++) {
char c = str.charAt(j);
if (Character.isDigit(c)) {
chars[i++] = c;
if (j != chars.length - 1)
continue;
}
if (chars[0] == '\0')
continue;
String num = new String(chars).trim();
System.out.println(num);
chars = new char[str.length()];
i = 0;
}
Output : 1234567890 54897
String nums = input.replaceAll("[^0-9 ]", "").replaceAll(" +", " ").trim();
String[] nums = input.replaceAll("[^0-9 ]", "").trim().split(" +");
String nums = input.replaceAll("[0-9 ]", "")
只会丢弃数字吗? - fade2black9
和 ]
之间,但感谢您的信息:我刚刚注意到我漏掉了否定符号 ^
。现在代码应该可以工作了。 - Bohemian String line = "This order was32354 placed 343434for 43411 QT ! OK?";
String regex = "[^\\d]+";
String[] str = line.split(regex);
String required = "";
for(String st: str){
System.out.println(st);
}
str = str.replaceAll("被替换的字符串","替换成的字符串");
。String str=" abc d 1234567890pqr 54897";
String str_rep1=" abc d ";
String str_rep2="pqr ";
String result1=str.replaceAll("", str_rep1);
String result2=str.replaceAll(",",str_rep2);
使用Java Scanner类的示例
import java.util.Scanner;
Scanner s = new Scanner( "abc d 1234567890pqr 54897" );
s.useDelimiter( "\\D+" );
while ( s.hasNextInt() ){
s.nextInt(); // get int
}
只提取数字
String str=" abc d 1234567890pqr 54897";
for(int i=0; i<str.length(); i++)
if( str.charAt(i) > 47 && str.charAt(i) < 58)
System.out.print(str.charAt(i));
String str=" abc d 1234567890pqr 54897";
boolean flag = false;
for(int i=0; i<str.length(); i++)
if( str.charAt(i) > 47 && str.charAt(i) < 58) {
System.out.print(str.charAt(i));
flag = true;
} else {
System.out.print( flag ? '\n' : "");
flag = false;
}