如何在java中严格查找字符串的子串?

时间:2012-01-05 10:08:54

标签: java string substring

我想在JAVA中找到特定的字符串,我正在使用CONTAINS函数。

但是CONTAINS的问题在于,即使有一个超级字符串可用于该字符串,它也会成立。

例如,

String i = "anand > 5 or id < 6" 

我想检查字符串是否包含AND或OR。但是这里i.contains("and")会因为anand而真实。

如何解决这个问题?

库中是否有可用的功能?

6 个答案:

答案 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。