Java, ищущий через строку - PullRequest
       3

Java, ищущий через строку

1 голос
/ 28 ноября 2011

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

    //Declares the String to be searched
    String temp = "Hello World?";

    //A String array is created to store the individual 
    //substrings in temp
    String[] array = temp.split(" ");

    //Iterates through String array and determines if the
    //substring is present
    for(String a : array)
    {
        if(a.equalsIgnoreCase("hello"))
        {
            System.out.println("Found");
            break;
        }
        System.out.println("Not Found");
    }

Этот алгоритм работает для "привет", но я не знаю, как заставить его работать на "мир", поскольку к нему прикреплен знак вопроса.

Спасибо за любую помощь!

Ответы [ 4 ]

6 голосов
/ 28 ноября 2011

Посмотрите: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#contains(java.lang.CharSequence)

String.contains();

Чтобы получить containsIgnoreCase (), вам нужно сделать ваше поисковое слово и вашу строку toLowerCase ().

Посмотрите на этот ответ: Как проверить, содержит ли строка другую строку без учета регистра в Java?

return s1.toLowerCase().contains(s2.toLowerCase());

Это также будет верно для: война миров, потому что она найдет мир . Если вы не хотите такого поведения, вам придется изменить свой метод, как сказал @ Барт Киерс.

4 голосов
/ 28 ноября 2011

Вместо этого введите следующее:

"[\\s?.!,]"

, которое соответствует любому пробелу, вопросительному знаку, точке, восклицательному знаку или запятой (добавьте больше символов, если хотите).

Или сделайтеtemp = temp.toLowerCase(), а затем temp.contains("world").

1 голос
/ 28 ноября 2011

Вам не нужно этого делать, это уже реализовано:

IndexOf и другие

0 голосов
/ 28 ноября 2011

Вы можете использовать:

String string = "Hello World?";
boolean  b = string.indexOf("Hello") > 0;         // true

Чтобы игнорировать регистр, необходимо использовать регулярные выражения.

b = string.matches("(?i).*Hello.*");

Еще один вариант игнорирования регистра:

// To ignore case
b=string.toLowerCase().indexOf("Hello".toLowerCase()) > 0 // true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...