Java 检查字符串是否包含给定字符

Java 检查字符串是否包含给定字符,java,string,Java,String,我试图使用while循环检查代码块是否已完成。当字符串中不再有“+”、“-”、“*”、“/”、“(”或“)”的任何实例时,它将已达到此状态。我发布的代码是我的尝试,尽管它不起作用 while (string.contains("+-*/()") == false) { modifier code } 可以使用和正则表达式,如: while (!string.matches(".*[-+/()*]+.*")) { // modifier code } 对于回溯和转义稍少的解决方案,编辑以立即更

我试图使用while循环检查代码块是否已完成。当字符串中不再有“+”、“-”、“*”、“/”、“(”或“)”的任何实例时,它将已达到此状态。我发布的代码是我的尝试,尽管它不起作用

while (string.contains("+-*/()") == false)
{
modifier code
}
可以使用和正则表达式,如:

while (!string.matches(".*[-+/()*]+.*"))
{
// modifier code
}

对于回溯和转义稍少的解决方案,编辑以立即更正正则表达式:

String quoted = Pattern.quote("+-*/()");
Pattern pattern = Pattern.compile("[" + quoted + "]");
while (pattern.matcher(string).find()) {
    // modifier code
}

更好的方法是避免在循环中使用
匹配器
,并在修改器代码中使用and一次性在
StringBuffer
中创建结果。但这取决于修饰符代码的作用。(我还得重新学习一下你是如何使用这些方法的。)

你到底有什么问题?您能在修改后的代码部分也显示代码吗?
contains()
将搜索该短语的实例,而不是所有这些字符的实例。因此,除非字符串字面上包含
+-*/()
,否则它将始终返回false。如果您不进行任何处理,为什么不直接使用
string#replaceAll(string,string)
?此正则表达式是错误的;您忘记转义character类中的
-
。@DoorknobofSnow我现在已经更正了顺序,因此无需转义