当前位置: 首页 > 知识库问答 >
问题:

检查并从Java中的字符串中提取一个数字

訾俊名
2023-03-14

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

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

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

共有3个答案

薛栋
2023-03-14

我认为它比正则表达式快。

public final boolean containsDigit(String s) {
    boolean containsDigit = false;

    if (s != null && !s.isEmpty()) {
        for (char c : s.toCharArray()) {
            if (containsDigit = Character.isDigit(c)) {
                break;
            }
        }
    }

    return containsDigit;
}
刘和正
2023-03-14

如果您想从输入字符串中提取第一个数字,您可以-

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”,将返回一个空字符串。

戴树
2023-03-14

试试这个

str.matches(".*\\d.*");
 类似资料:
  • 问题内容: 我有一个Java 对象。我只需要从中提取数字。我举一个例子: 我想要 是否有仅提取数字的库函数? 感谢你的回答。在尝试这些库之前,我需要知道是否必须安装任何其他库? 问题答案: 你可以使用正则表达式并删除非数字。

  • 问题内容: 这是一个简单的问题,但是我不明白。我想检测字符串中的url,然后将其替换为较短的url。 我从stackoverflow找到了这个表达式,但是结果仅仅是 有更好的主意吗? 问题答案: m.group(1)为您提供第一个匹配组,即第一个捕获括号。这是 您应该尝试查看m.group(0)中是否有内容,或者用括号将所有模式括起来,然后再次使用m.group(1)。 您需要重复查找功能以匹配下

  • 问题内容: 我有一个字符串,我想提取字符串中的(唯一)数字序列。 示例:helloThisIsA1234Sample。我想要1234 假设数字序列在字符串中只会出现一次,但不会出现在同一位置。 (对于那些会问的人,我有一个服务器名称,需要在其中提取一个特定的数字) 我想使用Apache commomns中的StringUtils类。 谢谢! 问题答案: 使用此代码号仅包含所需的输出。

  • 问题内容: 我想从包含数字和字母的字符串中提取数字: 我想在这里获取号码或任何其他号码。 问题答案:

  • 问题内容: 我有一个String变量(基本上是一个英语句子,带有未指定数量的数字),我想将所有数字提取到一个整数数组中。我想知道是否有使用正则表达式的快速解决方案? 我使用了Sean的解决方案,并对其进行了一些更改: 问题答案: …打印和。 -?匹配前导负号-可选。 d匹配一个数字,但是我们需要像Java String中那样编写。因此, d +匹配1个或多个数字。

  • 问题内容: 所以假设我有一个像 我需要它是: 用Java解析此问题的最佳方法是什么?到目前为止,我找不到使用标准Java库的解决方案,也不想重新发明轮子。 我试过了(但是如果我只放像我这样的查询参数,那将不起作用): 问题答案: 为什么不使用正则表达式之类的东西: 例如像这样的一个,它适用于您的url示例,这就是为什么我添加了这个部分;) 这将适用于第一个样本( -> 当然,如果您的参数名称也不是