我正在编写一个加载字符串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++;
}
}
答案 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);