【问题标题】:How to check if a string contains more than one numbers (java)?如何检查一个字符串是否包含多个数字(java)?
【发布时间】:2016-08-03 10:12:20
【问题描述】:

我想要一个 if 条件,仅当字符串包含多于四位数字时才为真,如果字符串中的数字少于四位,则为假,我尝试过像 /\d{4}/ 这样的正则表达式,需要帮助

【问题讨论】:

标签: java regex string


【解决方案1】:
public static void main(String[] args) {
    String toCheck1 = "assg3asgasgas123aassag3";
    String toCheck2 = "aasdasfasfs";
    System.out.println(String.format("more then 4 number in \"%s\" - %s", toCheck1, moreThen4NumbersInString(toCheck1)));
    System.out.println(String.format("more then 4 number in \"%s\" - %s", toCheck2, moreThen4NumbersInString(toCheck2)));
}

private static boolean moreThen4NumbersInString(String string) {
    int numberOfNumbers = 0;
    for (int i = 0; i < string.length(); i++) {
        if (Character.isDigit(string.charAt(i))) {
            numberOfNumbers++;
            if (numberOfNumbers > 4) {
                return true;
            }
        }
    }
    return false;
}

输出:

“assg3asgasgas123aassag3”中的数字超过 4 - 超过 4 “aasdasfasfs”中的数字 - 错误

【讨论】:

  • 达到阈值后无需继续计数......(只是说)
  • @Fildor 修复了这个问题
【解决方案2】:

以下模式将匹配至少包含 4 位数字的字符串:

(.*?\d){4, }

【讨论】:

  • 不,它是一个正则表达式模式。如何将它集成到 Java 中应该不是问题
【解决方案3】:

string 转换为char[]for-循环遍历数组的所有元素并计算int count 中的位数。就这么简单

【讨论】:

    【解决方案4】:

    您的表达式需要四位数字。数字之间还有一些其他字符,因此请至少四次请求“数字和可选内容”:

    (?:\d.*?){4,}
    

    演示:https://regex101.com/r/kZ7iZ9/2

    【讨论】:

    • “.*?”必须在数字之前
    • @RafaelAlbert,无论哪种方式都应该工作,但\d.*? 似乎更有效
    • 取决于模式是否必须在开头匹配,因此取决于使用的方法。
    • OP 要求四位数字,但未指定任何位置条件。而(?:\d.*?){4,} 模式并不意味着任何——没有^
    【解决方案5】:

    给你一个样本:

    package com.company.misc;
    
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class RegexSample {
    
        public static void main(String[] args) {
            String regex = "(.*?\\d){4,}"; 
            //(.*?\d){4, } do not use this, compilation error
            String input = "test2531";
            Pattern pattern = Pattern.compile(regex);
            Matcher matcher = pattern.matcher(input);
    
            boolean isMatched = matcher.matches();
            System.out.println(isMatched);
    
        }
    }
    

    希望我已经为您的用例提供了示例。

    【讨论】:

      猜你喜欢
      • 2014-12-27
      • 2021-05-06
      • 2014-06-25
      • 2020-08-18
      • 2013-03-13
      • 1970-01-01
      • 2021-04-06
      • 2012-12-26
      • 1970-01-01
      相关资源
      最近更新 更多