Сравнение слов за словом - PullRequest
0 голосов
/ 11 октября 2009

Я хочу спросить, знает ли кто-нибудь, есть ли в Java встроенная библиотека для выполнения чего-то вроде следующего.

Например,

У меня есть 2 строки, которые: String a = "Да, я люблю программирование на Java."; Строка b = "love";

Я хочу проверить, является ли строка b, содержащая «любовь», частью токенов в строке a. Следовательно, я хочу спросить, есть ли Java API для этого? Я хочу что-то вроде

a.contains (b) <--------- Вернуть истинный результат </p>

Есть ли ??? потому что ,,,, если бы для этого не было Java API, я бы написал свой собственный алгоритм.

Заранее спасибо за любую помощь .. ^^

Ответы [ 6 ]

9 голосов
/ 11 октября 2009

Пока что предложения (indexOf, contains) хороши, если вы просто хотите найти подстроки. Однако, учитывая название вашего вопроса, я предполагаю, что вы действительно хотите найти слова . Например, если спросить, содержит ли «Она в черных перчатках» слово «любовь», я думаю, вы захотите, чтобы ответ был «нет».

Регулярные выражения, вероятно, являются лучшим способом продвижения вперед, используя границу слова вокруг рассматриваемого слова:

import java.util.regex.*;

public class Test
{    
    public static void main(String[] args)
    {
        System.out.println(containsWord("I love Java", "love"));
        System.out.println(containsWord("She wore gloves", "love"));
        System.out.println(containsWord("start match", "start"));
        System.out.println(containsWord("match at end", "end"));
    }

    public static boolean containsWord(String input, String word)
    {
        Pattern pattern = Pattern.compile("\\b" + Pattern.quote(word) + "\\b");
        return pattern.matcher(input).find();
    }
}

Выход:

true
false
true
true
1 голос
/ 11 октября 2009

метод, содержащий (CharSequence s), существует в классе String.

Так что ваш a.contains (b) будет работать

1 голос
/ 11 октября 2009
string strToCheck = "check me";    
int firstOccurence = strToCheck .indexOf("me");
//0 if no any
0 голосов
/ 11 октября 2009

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

//Split to an array using space as delimiter
    String[] arrayOfWords = a.split(" "); 

И тогда вы сравните как:что вы поняли

0 голосов
/ 11 октября 2009
0 голосов
/ 11 октября 2009

Вы можете использовать функцию indexOf () в библиотеке String, чтобы проверить это:

if(a.indexOf(b)>=0) 
return true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...