我想在JAVA中找到特定的字符串,我正在使用CONTAINS函数。
但是CONTAINS的问题在于,即使有一个超级字符串可用于该字符串,它也会成立。
例如,
String i = "anand > 5 or id < 6"
我想检查字符串是否包含AND或OR。但是这里i.contains("and")
会因为anand而真实。
如何解决这个问题?
库中是否有可用的功能?
答案 0 :(得分:5)
if (i.matches("(?s).*\\b(and|or)\\b.*")) System.println("AND or OR found");
(?s)
让。也匹配换行符
\\b
是一个单词边界
回答评论“嘿,现在我想......”
String[] words = ...;
StringBuilder expr = new StringBuilder();
for (String word : words) {
if (expr.length() != 0)
expr.append("|"):
expr.append(word);
}
i = i.replaceAll("\\b(" + expr + ")\\b", "bla");
答案 1 :(得分:2)
您可能需要查看正则表达式并使用以下正则表达式:
"\\band\\b"
\\b
应该表示正则表达式只匹配整个单词。
答案 2 :(得分:1)
你想检查你的字符串是否包含AND或OR然后检查i.contains("and")
你应该使用包含区分大小写的方法是错误的。要检查字符串是否包含AND,您需要编写contains("AND")
String i = "anand > 5 or id < 6";
System.out.println(i.contains("AND"));//returns false
System.out.println(i.contains("and"));//returns true
因为字符串包含而不是AND ,所以区分大小写
答案 3 :(得分:0)
看起来你想检查“AND”(带空格)而不只是“and”
答案 4 :(得分:0)
我会这样做: - 拳头大写你要搜索的刺(避免或/或和/和问题) - 搜索“和”(即带有前导和尾随空格)
答案 5 :(得分:0)
看起来你想要正则表达式,用你的词语来围绕你正在寻找的单词,即
"\\bAND\\b"
只有当它没有被其他字母包围时才会匹配AND。