Java-检查字符串是否包含相同的数字

Java-检查字符串是否包含相同的数字,java,regex,string,validation,Java,Regex,String,Validation,我有一个int,例如: 151515 1 1111111 4848484 111 888 我需要测试/检查数字是否仅包含1s,有效示例: 1 11111 1111111111 11 88888888888 8885555 4747 7 889 无效示例: 1 11111 1111111111 11 88888888888 8885555 4747 7 889 有什么建议吗? 可能有任何regex?或者有一种不使用正则表达式的快速解决方案,将值保留为int,而不将其解析为字符串。答案概念

我有一个
int
,例如:

151515
1
1111111
4848484
111
888
我需要测试/检查数字是否仅包含1s,有效示例:

1
11111
1111111111
11
88888888888
8885555
4747
7
889
无效示例:

1
11111
1111111111
11
88888888888
8885555
4747
7
889
有什么建议吗? 可能有任何
regex
?或者有一种不使用正则表达式的快速解决方案,将值保留为int,而不将其解析为字符串。

答案概念 1.首先将int转换为string。 2.然后试试这个正则表达式:

"^[1]*$"
3.通过使用java regexp模式匹配
传递字符串和模式

匹配的
int
数量非常有限,因此您可以这样做

if (i == 1 || i == 11 || i == 111 || ..... )
编译器将告诉您何时停止(“literal对于int来说太大”)。

您可以这样尝试:

String str = "1111111";
System.out.println(str.matches("^[1]+$")); 
String str = String.valueOf(nums);

if (str.replaceAll("1", "").length() == 0) {
    // it contains all ones
} 

您可以这样尝试:

String str = "1111111";
System.out.println(str.matches("^[1]+$")); 
String str = String.valueOf(nums);

if (str.replaceAll("1", "").length() == 0) {
    // it contains all ones
} 
那么:

public boolean isAllOnes(int num) {
    for (int powerOf10 = 10; ; powerOf10 *= 10) {
        if (num * 9 == powerOf10 - 1) {
            return true;
        }
        if (powerOf10 > Integer.MAX_VALUE / 10) {
            return false;
        }
    }
}

这不涉及正则表达式或转换为字符串,但我不知道它是否真的比其他答案快。(Thilo的暴力解决方案可能是最快的。)

这将匹配一个空
字符串。您可以将
*
替换为
+
,以防止出现这种情况。@Titus如果他将整数转换为字符串,则不可能为空。@ajb哦,是的,您是对的。我没有考虑过。