想知道我的字符串是否包含从 0 到 9 的每个数字。我目前正在使用以下逻辑:
if (str.contains("0") && str.contains("1") && str.contains("2") && str.contains("3") && str.contains("4") && str.contains("5") && str.contains("6") && str.contains("7") && str.contains("8") && str.contains("9"))
{
return true;
}
我相信如果字符串太大的话这不会得到很好的优化。如何使用模式并通过正则表达式使用 String.matches 查找它是否包含所有数字?
这不是论坛中讨论“OR”相关字符模式的大多数其他正则表达式问题的重复,这里我们讨论的是“AND”。我需要一个字符串是否包含每个给定的字符(即数字)。希望它能澄清。
谢谢, 拉吉夫
最佳答案
我不会推荐使用正则表达式来完成此任务,因为它看起来不优雅。它看起来像(将鼠标悬停在上面可以看到剧透):
block 引用>相反,在 Java 8 中,您可以使用
bool result = s.chars().filter(i -> i >= '0' && i <= '9').distinct().count() == 10;
它过滤所有数字(
s.chars()
)的字符串字符(.filter(i -> i >= '0' && i <= '9')
),仅保留唯一出现的字符(.distinct()
),然后用.count()
检查它们的计数。如果计数等于 10,则有全部 10 个 ASCII 数字。因此,以下代码:
String s = "1-234-56s78===90"; System.out.println(s.chars().filter(i -> i >= '0' && i <= '9').distinct().count() == 10);
关于java - 如何通过正则表达式判断字符串是否包含每个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44583707/