Java检查字符串是否包含特定的数字序列

时间:2018-10-11 13:51:01

标签: java

我有一个创建的方法来检查字符串是否包含String中的9的任何变体。这可能是4个9、9个9等。我遇到的问题是,其中包含9的任何东西都是正确的。我需要提取一定长度的数字序列。

我必须检查这9个数字的原因是由于数据错误。该错误数据可能有五个九或十个九等,例如99999999或999999999,如果找到,则返回true。

什么是完成我要完成的工作的好方法?我还在学习。谢谢!

这是我为此方法编写的内容

 public static Boolean isValidTrmDt(String dt){


    if(dt.isEmpty() || dt == null || dt.equals("0") || dt.contains("9") == 
    true && dt.length() > 0) {



        return Boolean.FALSE;
    }

    return Boolean.TRUE;

}

4 个答案:

答案 0 :(得分:3)

只需使用正则表达式

boolean oneOrMoreNines = myString.matches("9+");

请参见String::matchestest the regex

答案 1 :(得分:0)

大多数情况下看起来不错,但是您有很多多余的检查。

dt.isEmpty() || dt == null || dt.equals("0") || dt.contains("9") == true && dt.length() > 0

应该首先进行null检查,否则dt.isEmpty()将引发异常。

我不确定dt.length() > 0的重点。如果它有9,则其长度已经大于零,因为它有9。

您可以将其简化为

dt == null || dt.isEmpty() || dt.equals("0") || dt.contains("9")

您可以通过返回以下语句来进一步简化它:

public static boolean isValidTrmDt(String dt){
  return !(dt == null || dt.isEmpty() || dt.equals("0") || dt.contains("9"));
}

答案 2 :(得分:0)

您可以从输入中删除9,以防万一您不想使用正则表达式。

boolean isOnlyContainingNines(String input){
   String output = value.replace("9","");
   return output.isEmpty();
}

答案 3 :(得分:0)

如果要检查String是否仅包含特定数字,请使用此方法

boolean matchesNumber(String input, String numberToMatch){
    return input.replace(numberToMatch, "").isEmpty();
}