Как строго найти подстроку строки в Java? - PullRequest
0 голосов
/ 05 января 2012

Я хочу найти определенную строку в JAVA, и для этого я использую функцию CONTAINS.

Но проблема с CONTAINS заключается в том, что он дает значение true, даже если для этой строки есть супер-строка.

Например, скажем

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

и я хочу проверить, содержит ли строка AND или OR. Но здесь i.contains("and") даст истину из-за Ананда.

Как решить эту проблему?

Есть ли какая-либо функция, доступная в библиотеке?

Ответы [ 7 ]

5 голосов
/ 05 января 2012
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");
2 голосов
/ 05 января 2012

Возможно, вы захотите взглянуть на регулярные выражения и использовать следующее регулярное выражение:

"\\band\\b"

* \\b должно обозначать регулярное выражение только для соответствия целым словам.

1 голос
/ 05 января 2012

Вы хотите проверить, содержит ли ваша строка 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 , она чувствительна к регистру

0 голосов
/ 05 января 2012

Вы хотите поиск по всему слову.Это можно сделать с помощью регулярных выражений:

i.matches("\\band\\b")

, где \ b обозначает границу слова

0 голосов
/ 05 января 2012

Выглядит, что вам нужны регулярные выражения, когда вы заключаете искомое слово в разрывы слов, т.е.

"\\bAND\\b"

Это будет соответствовать И только тогда, когда оно не окружено другими буквами.

0 голосов
/ 05 января 2012

Я хотел бы сделать так: - в первом верхнем регистре жало, которое вы ищете (чтобы избежать проблем / или ИЛИ и / И) - поиск "и" (то есть с начальным и конечным пробелом)

0 голосов
/ 05 января 2012

выглядит так, как будто вы хотите проверить «И» (с пробелами) вместо «и»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...