搜索特定字符

时间:2013-12-11 03:10:01

标签: java

我正在编写一个加载字符串ArrayList的代码,并检查是否使用了特定的单词。这可能听起来很奇怪,但细节是:

包含“toot”的toots数量(任何大小写并允许零(0)代替oh(o),例如“to0t”也应计算在内);但是,如果它只包含“嘟嘟”作为另一项工作的一部分,你不应该算一个嘟嘟声,例如,“tooter”不足以计算一个嘟嘟声。

我尝试了很多东西,但似乎没有用......

这是我写的:

for (String toot : toots) {
    toot.toLowerCase();
    toot.replace("0", "o");
}
tootsWithToot = 0;
for(int i=0; i<toots.size(); i++){
    if(toots.get(i).contains("toot ") || toots.contains(" toot ")
                                      || toots.contains(" toot.")
                                      || toots.contains(" toot")
                                      || toots.contains("toot")){
        tootsWithToot++;
    }
}

3 个答案:

答案 0 :(得分:2)

字符串是不可变的

toot.toLowerCase();
toot.replace("0", "o");

什么都不做,你必须把它分配回toot

toot = toot.toLowerCase();
toot = toot.replace("0", "o");

答案 1 :(得分:0)

您可以使用ListIterator更好地完成此操作。继续迭代并重新插入已处理的String。

        /**
         * Preprocess the list
         */
        ListIterator<String> iterator = toots.listIterator();
        while (iterator.hasNext()) {
            String toot = iterator.next();
            iterator.remove();
            iterator.add(toot.toLowerCase().replace("0", "o"));
        }                
        int tootsWithToot = 0;
        for(int i=0; i<toots.size(); i++){
            if(toots.get(i).contains("toot ") || toots.contains(" toot ")
                    || toots.contains(" toot.")
                    || toots.contains(" toot")
                    || toots.contains("toot")){
                tootsWithToot++;
            }
        }  

答案 2 :(得分:0)

试试这个..希望代码解释..

      int tootsWithToot = 0;
      for (String toot : toots) {
        toot  = toot.toLowerCase().replaceAll("0", "o").replaceAll("toots", "toot");
      //here add anything which need to skip..
        if(toot.contains("toot"))
        {
            StringTokenizer str = new StringTokenizer(toot," "); 
           /*space is token  
             [ suppose toot. it will not pass if u want to pass toot. than  
             add in replaceAll("toot.", "toot") just make all passed strings to 'toot'] 
           */
            while(str.hasMoreTokens())
            {
                if(str.nextToken().equalsIgnoreCase("toot"))
                {   tootsWithToot++; break;}
            }

        }               
    }
   System.out.println("tot:" +tootsWithToot);