我想比较一个arrayList对象和一个String,忽略大小写。我怎样才能做到这一点?

时间:2014-10-19 17:58:57

标签: java object if-statement arraylist ignore-case

以下用Java编写的代码

public static void main (String [] args) throws Exception
{
    ordListe ol = new ordListe();
    ol.lesBok("navn.text");
    ol.leggTilOrd("hello");
    ol.leggTilOrd("Hello");

是我的主要方法。这是关于从文件读取并添加到arraylist(字典)。 ''你好''和"你好"应该是同一个单词,在下面的代码中,它应该增加该单词的计数。

for (int i = 0; i < ordListe.size(); i++)
    {
        if (ordListe.toString().contains(s))
        {
            if (ordListe.get(i).toString().equalsIgnoreCase(s))
            {
                ord.oekAntall();
                System.out.println("'" + s + "' That word is found and there are " + ord.hentAntall() + " of that word now in dictionary.");
                break;
            }
        }

        else
        {
            Ord ny = new Ord(s);
            ordListe.add(ny);
            System.out.println("'" + s + "' This word is added. " + ny.hentAntall() + " of this word in dictionary.");
            break;
        }
    }

所以这是我的代码的一部分。从主要方法我添加像ol.leggTilOrd("hello"); leggTilOrd这样的单词是我的方法,其中上面的代码来自。这是将字添加到字典/ arrayList并检查输入字是否已存在的代码的一部分。除了特定的if (ordListe.get(i).toString().equalsIgnoreCase(s))部分之外,我没有任何其他问题。如果arrayList中存在一个单词,我应该增加该单词的计数。如果没有,我在arraylist(ordListe)中添加单词。问题是即使我添加ol.leggTilOrd("hello")ol.leggTilOrd("Hello");有了资本&#39; H,即使我使用上述陈述,我也无法将其识别为同一个词。我该怎么做,还有其他任何可能吗?经过多次尝试之后,这是我最后的努力。

如果上面有任何疑问,请告诉我。

2 个答案:

答案 0 :(得分:0)

在比较之前将两个字符串更改为小写,然后比较..这将帮助您,并且更容易!使用toLower函数然后比较

答案 1 :(得分:0)

问题在于这一行:

if (ordListe.toString().contains(s))

因为1)你不比较两个字符串的小写或大写版本,2)你可能没有覆盖toString,所以它会像你预期的那样返回列表中的项目。假设您的ordliste扩展了arraylist:

,请将此函数放在ordListe类中
public boolean containsIgnoreCase(String item) {
     for(int i = 0; i < size(); i++) {
           if (get(i).toString().equalsIgnoreCase(item)) {
               return true;
           }
     }

     return false;
}

现在你可以调用containsIgnoreCase来确定列表中是否有特定的项目忽略大小写