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

验证字符串是否只有数字

通奕
2023-03-14

我的Java应用程序“A”正在从另一个Java应用程序获取移动电话号码作为字符串。因此,在应用程序A获得手机号码字符串后,我需要验证该手机号码字符串中是否只有数字。为了验证我使用了如下的简单逻辑

public static boolean containsOnlyDigits(String str, int n) {
    for (int i = 1; i < n; i++) {
        if (!Character.isDigit(str.charAt(i))) {
            return false;
        }
    }
    return true;
}

我正在检查I=1,因为国家代码的第一个字符将是“”。这种方法是O(n)。还有另一种方法,我们可以使用Double。parseDouble(str)。这将抛出<代码> No.MultFrimeExtry,以便我们可以捕获并考虑它是一个字母数字字符串。

以下哪种方法最好基于性能?

共有3个答案

高锦
2023-03-14

我正在检查I=1,因为国家代码的第一个字符将是“”。

你可以使用正则表达式,\\d{n-1},这意味着第一个字符是,剩下的n-1字符是数字。这也意味着字符串的总长度应该是n

public class Main {
    public static void main(String[] args) {
        // Tests
        System.out.println(containsOnlyDigits("+123456789", 10));
        System.out.println(containsOnlyDigits("+123456789", 9));
        System.out.println(containsOnlyDigits("+123456789", 8));
        System.out.println(containsOnlyDigits("-123456789", 9));
        System.out.println(containsOnlyDigits("123456789", 9));
        System.out.println(containsOnlyDigits("ABC123456", 9));
    }

    public static boolean containsOnlyDigits(String str, int n) {
        String regex = "\\+\\d{" + (n - 1) + "}";
        return str.matches(regex);
    }
}

输出:

true
false
false
false
false
false
姚韬
2023-03-14

使用正则表达式代价高昂。因此,在Java8中使用lambda表示法可以很容易地解决这个问题。

boolean numericControl = str.chars().allMatch(x -> Character.isDigit(x));
东门文斌
2023-03-14

如果没有用,可以尝试删除

 /**
 * Assuming that a phone number is of an international format, having `+` sign as prefix
 * and with no spaces in between the numbers, validates if a string is a valid phone number.
 * 
 * @param phone
 * @return resulting boolean
     */
private boolean isValidPhoneNumber(String phone) {
    if(phone == null) return false;
    
    return Pattern.matches("\\+\\d{11,15}", phone);
}
 类似资料:
  • 问题内容: 我想要最简单的故障安全测试来检查JavaScript中的字符串是否为正整数。 对于各种非整数值返回true,并且为浮点字符串返回整数,例如“ 2.5”。而且我也不想使用某些jQuery插件。 问题答案: 为您提供两个答案: 基于解析 正则表达式 请注意,在两种情况下,我都将“正整数”解释为包括,即使它不是正数。如果您不愿意,我会提供注释。 基于解析 如果希望它是在合理值范围内的归一化十

  • 我想要最简单的故障安全测试来检查JavaScript中的字符串是否为正整数。 为所有类型的非整数值返回true,为浮点字符串返回整数,如“2.5”。我也不想使用jQuery插件。

  • 问题内容: 我正在SQL Server 2008中工作。我正在尝试测试字符串(varchar)是否只有数字字符(0-9)。我知道IS_NUMERIC函数会产生虚假结果。(我的数据可能带有$符号,不应通过测试。)因此,我避免使用该功能。 我已经有一个测试,看一个字符串是否有任何非数字字符,即 我认为唯一的数字测试将是类似的东西,但是我在空白处。有任何想法吗? 问题答案: 使用 演示版

  • 本文向大家介绍C#验证给定字符串是否为数字的方法,包括了C#验证给定字符串是否为数字的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#验证给定字符串是否为数字的方法。分享给大家供大家参考。具体分析如下: 这段C#代码用于验证给定的字符串是否为数字,不能用于验证负数,字符串中只能出现数字和小数点,否则认为不是数字,不验证数字的长度,也就是说,给定的字符串再长,哪怕是1万个字符,也可以

  • 问题内容: 如何检查字符串是否是Java中的URL? 问题答案: 您可以尝试用它创建一个对象。如果该URL不正确,则会引发a。

  • 问题内容: 如何最好地检查字符串输入是否为编码的有效Java变量?我确定我不是第一个愿意这样做的人。但是也许我缺少正确的关键字来找到有用的东西。 最好的可能是RegEx,它检查以下内容: 以字母开头 然后可以包含数字,字母 可以包含一些特殊字符,例如’_’(哪个?) 可能不包含空格分隔符 问题答案: 编辑:并且,如@Joey所指示,您还应该过滤掉关键字和保留字。