JAVA奇怪的字符串比较问题

时间:2015-06-23 20:21:15

标签: java string

这是java字符串比较中一个非常奇怪的问题。我实际上是java的新手,所以请原谅我是否理解错误。

目标是获取文本的网址"下一个?"应该分配给nextLink。第一个if块能够找到" Next"在我的linkText String对象中,但第二个if块失败。

以下是代码:

String linkText = link.text().trim();
if(linkText.contains("Next"))
{
    System.out.println(" Contains Out :" + "  " + linkText);
    nextLink = link;
}

if(linkText.equals("Next?"))
{
    System.out.println(" Equals Out :" + "  " + linkText);
    nextLink = link;
}

这是输出:

Contains Out :  Next?

正如您在控制台输出中看到的那样,linkText的值为Next?

在这种情况下,equals()是不是真的?

修改

如果阻止,则更改了两个消息。 equals()也表现出相同的行为。

2 个答案:

答案 0 :(得分:2)

您正在与equalsIgnoreCase(...)进行比较,它将忽略大小写,但只匹配相等长度的字符串,但使用contains(...)进行搜索,不会忽略大小写,并且会匹配主字符串中的子字符串。

答案 1 :(得分:0)

str.equalsIgnoreCase(string)检查char序列是否包含在字符串中。

String linkText = link.text().trim(); if(linkText.toLowerCase().contains() ("Next?".toLowerCase())){ System.out.printf(" * a ===> : <%s> (%s)\n", link.attr("abs:href"), link.text()); nextLink = link; } if(linkText.contains ("Next")){ System.out.printf(" * a ===> : <%s> (%s)\n", link.attr("abs:href"), link.text()); nextLink = link; } 检查两个字符串是否相等,忽略大小写。

如果您想检查链接中是否包含文本,请尝试此操作:

String linkText = link.text().trim();

if(linkText.equals("Next?"){

System.out.printf(" * a ===> : <%s>  (%s)\n", link.attr("abs:href"), link.text());
    nextLink = link;

}
if(linkText.equals("Next")){

    System.out.printf(" * a ===> : <%s>  (%s)\n", link.attr("abs:href"), link.text());
    nextLink = link;

}

如果您想检查文本是否与链接相同,请尝试此操作:

"Next?"

在此代码中,我检查小写的{{1}}是否包含在小写的完整网址中。