单词比较

时间:2009-10-11 18:45:59

标签: java

我想问一下是否有人知道Java是否内置了库以执行以下操作。

例如,

我有两个字符串: 字符串a =“是的,我喜欢Java编程。”; 字符串b =“爱”;

我想检查包含“love”的String b是否是String a中标记的一部分。因此,我想问一下有没有Java API这样做? 我想要类似的东西,

a.contains(b)< ---------返回真实结果

有没有??? 因为,,,,如果没有Java API,我会编写自己的算法。

提前感谢任何帮助.. ^^

6 个答案:

答案 0 :(得分:9)

目前为止的建议(indexOfcontains)如果您只是想查找子字符串,那么这些建议都很好。但是,鉴于您的问题标题,我假设您确实想要找到单词。例如,如果被问及“她戴着黑色手套”是否包含“爱”,我的猜测是你想要答案是否定的。

正则表达式可能是这里最好的方法,使用相关单词周围的单词边界:

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 :(得分:1)

string strToCheck = "check me";    
int firstOccurence = strToCheck .indexOf("me");
//0 if no any

答案 2 :(得分:1)

该方法包含(CharSequence s)类String。

所以你的a.contains(b)会起作用

答案 3 :(得分:0)

您可以使用String库中的indexOf()函数来检查它:

if(a.indexOf(b)>=0) 
return true;

答案 4 :(得分:0)

答案 5 :(得分:0)

如果你想找到单词很容易,你只需要使用split。

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

然后你会比较:

"love".equalsIgnoreCase(arrayOfWords[i]);

类似的东西,你明白了