在 Java 中检查并从字符串中提取数字

2022-08-31 08:41:40

我正在编写一个程序,其中用户以以下格式输入字符串:

"What is the square of 10?"
  1. 我需要检查字符串中是否有数字
  2. ,然后只提取数字。
  3. 如果我使用 或 ,则无论输入是什么,程序都无法在字符串中找到数字,但只有在只有数字时才有效。.contains("\\d+").contains("[0-9]+").matches("\\d+")

我可以使用什么作为查找和提取的解决方案?


答案 1

试试这个

str.matches(".*\\d.*");

答案 2

如果要从输入字符串中提取第一个数字,可以执行以下操作-

public static String extractNumber(final String str) {                
    
    if(str == null || str.isEmpty()) return "";
    
    StringBuilder sb = new StringBuilder();
    boolean found = false;
    for(char c : str.toCharArray()){
        if(Character.isDigit(c)){
            sb.append(c);
            found = true;
        } else if(found){
            // If we already found a digit before and this char is not a digit, stop looping
            break;                
        }
    }
    
    return sb.toString();
}

例子:

对于输入“123abc”,上述方法将返回123。

对于“abc1000def”,为 1000。

对于“555abc45”,则为 555。

对于“abc”,将返回一个空字符串。