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

Java检查字符串是否包含特定的数字序列,java,Java,我创建了一个方法来检查字符串中是否包含任何9的变化。这可能是4个9,9个9等等。我的问题是,这对于任何有9的东西都是正确的。我需要提取一个长度不同的数字序列 我必须检查这些9的原因是因为数据不好。此错误数据可能有五个9或十个9等。999999999或999999999,如果找到,则返回true 要完成我想做的事情,什么是好方法?我还在学习。谢谢 下面是我为这个方法写的内容 public static Boolean isValidTrmDt(String dt){ if(dt.is

我创建了一个方法来检查字符串中是否包含任何9的变化。这可能是4个9,9个9等等。我的问题是,这对于任何有9的东西都是正确的。我需要提取一个长度不同的数字序列

我必须检查这些9的原因是因为数据不好。此错误数据可能有五个9或十个9等。999999999或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;

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

只需使用正则表达式

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

请参阅,并且

大部分看起来都不错,但是您有很多冗余检查

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"));
}

若要检查字符串是否只包含特定的数字,请使用此方法

 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;

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

举个例子,哪个值必须返回true,哪个vqlue应该返回false,你想找到完整的9序列吗?“我创建了一个方法来检查字符串是否包含9。我遇到的问题是,对于任何包含9的字符串,这都是真的。”听起来像。。。嗯。。。理想的行为,no?
dt.isEmpty()| | dt==null
如果
dt
为null,则会引发NullPointerException。首先检查null-->
dt==null | | dt.isEmpty()
。对不起,我想我问错问题了。如果发现999999999999999999或任何其他变量,只要它是99,我就需要返回true。如果说1999,它将返回false。您需要一个否定的lookback,“匹配一个字符串,如果它至少有一个时间9没有前面有另一个数字”:类似于
string.matches(“?![0-8]9+”)
(抱歉,没有测试,但至少这是一个方向)有方法检查两个或更多的9吗?例如,如果输入1999,则返回false。谢谢@JoeZ两个或更多的9就是
99+
。我不知道你说的
1999
是什么意思-它应该失败还是成功?它将在1999年失败。请注意,正则表达式匹配对于非常大和复杂的应用程序可能会耗费时间和处理能力inputs@Michael谢谢你的回答!我进行了测试,这符合我的需要。我不认为处理能力应该是个问题,因为我不认为输入有那么大或复杂。