我正在编写一个程序,其中用户输入以下格式的字符串:
"What is the square of 10?"
。包含("\\d")
或。包含("[0-9]")
,程序在字符串中找不到数字,无论输入是什么,但.匹配("\\d")
仅在只有数字时才有效。我可以使用什么作为查找和提取的解决方案?
我认为它比正则表达式快。
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;
}
如果您想从输入字符串中提取第一个数字,您可以-
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”,将返回一个空字符串。
试试这个
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示例,这就是为什么我添加了这个部分;) 这将适用于第一个样本( -> 当然,如果您的参数名称也不是