Java 逐字比较

Java 逐字比较,java,Java,我想问一下,是否有人知道Java是否内置了用于执行以下操作的库 比如说, 我有两个字符串,它们是: String a=“是的,我喜欢Java编程。”; 字符串b=“爱” 我想检查包含“love”的字符串b是否是字符串a中标记的一部分。因此,我想问,是否有Java API可以这样做? 我想要像这样的东西 a、 包含(b)您可以使用字符串库中的indexOf()函数来检查它: if(a.indexOf(b)>=0) return true; 是的,有:。该方法包含(字符序列)存在于类字符串

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

比如说,

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

我想检查包含“love”的字符串b是否是字符串a中标记的一部分。因此,我想问,是否有Java API可以这样做? 我想要像这样的东西

a、 包含(b)您可以使用字符串库中的indexOf()函数来检查它:

if(a.indexOf(b)>=0) 
return true;
是的,有:。

该方法包含(字符序列)存在于类字符串中

因此,您的a.contains(b)将起作用

到目前为止的建议(
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

如果你想找到的话会很容易,你只需要使用分裂

//Split to an array using space as delimiter
    String[] arrayOfWords = a.split(" "); 
然后你会比较如下:

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

诸如此类,你会有这样的想法

呃,有一个contains(…)在字符串中持续几年!如果执行类似于
if(boolead)的操作,则返回布尔值思维也做
返回布尔值。换句话说:
返回a.indexOf(b)>=0
在本例中不是这样。当
a
不包含
b
时,上述方法体没有返回路径,因此非常无效。感谢Corazu的建议。我感谢你提出的想法。:)在这种情况下,由于逗号的原因,它与“Yeahh”不匹配。您需要根据单词边界而不仅仅是空格进行拆分。拆分有一个“any whitespace”操作符,并且应该是可伸缩的和/或是学习和技能提升。我之所以这么说,是因为这是一项需要反复练习的基本技能。David Eck有一个特别好的实现,在一些单词的末尾加上撇号's'是非常有挑战性的工作。有许多数据结构可以以不同的方式实现您想要的功能。从HashMap或其他东西开始,一直工作到你被卡住为止,让我们知道。哇,感谢MexicanHacker提出了另一个字符串方法操作的想法,也感谢Jon Skeet和Nicholas Jordan强调了重要问题。:)哦,是的,分享一些我知道的东西,以这种方式分割它也可以在StringTokenizer中完成:)嘿,Jon Skeet,谢谢你,伙计。。我非常感谢你的帮助。我目前正在做我的最后一个计算机科学项目,剽窃分析,我需要做网络爬虫等等。您给出的代码可以作为我进行文本分析的良好开端。再次感谢。:)顺便说一句,Jon Skeet。。我还没有真正尝试过使用模式。为了节省我的时间,我可以问一下,像containswarks(“我爱Java”,“我Java”)这样的东西是否会返回false。你也许可以用一个更复杂的正则表达式来修复它,但我现在没有时间去尝试。嘿,Restuta,谢谢你提供的信息,,,但是如果把strToCheck.indexOf(“check”);也将返回0结果。但是,你真的让我想起了indexOf方法。非常感谢。:)哈哈…Nettogrof,,,我不知道CharSequence接受字符串,尽管我知道有这个方法。非常感谢你强调这一点。非常感谢。:)谢谢你,巴特,我就知道。哈哈……:)
"love".equalsIgnoreCase(arrayOfWords[i]);