匹配和从ArrayList中删除项目

时间:2012-03-24 08:15:04

标签: java android regex

我真的不知道为什么我这么挣扎。我正在将YouTube上的视频ID写入ArrayList,我需要删除一对。我已经尝试了几种不同的方法来删除它,但它们都没有用。

这就是我所拥有的

while (m.find()) {
   if (m.group(0) == "default.jpg")
      //Do nothing
   } else { 
      allMatches.add(m.group(0));
      count++;
   }
}

然后我尝试

int i = 0;
while (i < allMatches.size()) {
   if (allMatches.get(i) == "default.jpg") {
      allMatches.remove()
   }
   i++;
}

也行不通。最后,在设置图像时我试试这个

if (allMatches.get(position).toString() == "default.jpg") {
   allMatches.remove(position);                 
   bitmap = null;
}

为什么这些都不起作用? default.jpg肯定被选中,因为它没有从gridview中删除。

或者,如果有人知道如何停止以下表达式选择'default.jpg'和'video?view',那么我很乐意听取您的建议。

String expr = "(?<=v=)[a-zA-Z0-9-_]{11}(?=&)|
   (?<=[0-9]/)[^&\n]{11}|(?<=v=)[^&\n]{11}";

3 个答案:

答案 0 :(得分:3)

使用.equals

 if (allMatches.get(position).toString().equals("default.jpg")) {
    }

可能有效,如果不行,请将allMatches列表数组发布为element....

答案 1 :(得分:0)

比较java中的字符串是错误的。 java中的字符串是对象。不能将它们与==运算符进行比较。使用equals方法:

str1.equals(str2)

在你的情况下:

"default.jpg".equals(allMatches.get(i))

使用==方法比较字符串时,实际上是比较引用而不是值。

答案 2 :(得分:0)

您无法将java中的字符串与“==”进行比较,您必须使用string.equals("stringtomatch")

只是为了澄清字符串上的“==”是比较内存地址而不是实际的字符串值。所以你可以使用“==”但它不会产生你期望的值。

相关问题