我正在尝试使用while循环检查代码块是否已完成。当字符串中不再有'+',' - ','*','/','('或')'时,它将达到此状态。我发布的代码是我的尝试,虽然它不起作用。检查一个字符串是否包含给定字符
while (string.contains("+-*/()") == false)
{
modifier code
}
我正在尝试使用while循环检查代码块是否已完成。当字符串中不再有'+',' - ','*','/','('或')'时,它将达到此状态。我发布的代码是我的尝试,虽然它不起作用。检查一个字符串是否包含给定字符
while (string.contains("+-*/()") == false)
{
modifier code
}
你可以使用String#matches()
和正则表达式,如:
while (!string.matches(".*[-+/()*]+.*"))
{
// modifier code
}
编辑以正则表达式现在
这个正则表达式是错误的;你忘了在字符类中逃避'-'。 – Doorknob
@ DoorknobofSnow我已经纠正了现在的订单,所以不需要转义它 –
有关解决方案略少回溯和转义:
String quoted = Pattern.quote("+-*/()");
Pattern pattern = Pattern.compile("[" + quoted + "]");
while (pattern.matcher(string).find()) {
// modifier code
}
更好的办法是避免使用Matcher
一个循环,并使用修改器代码中的Matcher.appendReplacement()
和Matcher.appendTail()
以一次性的方式在StringBuffer
中创建结果。但这取决于修饰符代码的作用。 (而且我还是要继续关注你如何使用这些方法。)
你确切的问题是什么?你能否在*修改代码*部分显示代码? –
'contains()'将搜索该短语的实例,而不是任何地方的所有这些字符的实例。因此,除非字符串字面上包含“+ - * /()”,否则它将始终返回false。 – berry120
如果你没有做任何处理,为什么不使用'String#replaceAll(String,String)'? –