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

时间:2016-02-10 07:05:31

标签: java regex string validation

我有一个int例如:

151515
1
1111111
4848484
111
888

我需要测试/检查数字是否仅包含1,有效示例:

1
11111
1111111111
11

无效的例子:

88888888888
8885555
4747
7
889

有什么建议吗? 可能是任何regex?或者有一个没有正则表达式的快速解决方案,并将值保存为int而不将其解析为String。

5 个答案:

答案 0 :(得分:9)

你可以这样试试:

String str = String.valueOf(nums);

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

答案 1 :(得分:4)

只有非常有限的int匹配,所以你可以

if (i == 1 || i == 11 || i == 111 || ..... )

编译器会告诉你何时停止(“文字对于int来说太大了”)。

答案 2 :(得分:1)

怎么样:

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的蛮力解决方案可能是最快的。)

答案 3 :(得分:0)

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

"^[1]*$"

3.使用java regexp模式匹配 传递字符串和模式

答案 4 :(得分:0)

您可以尝试这样:

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

IDEONE DEMO