我真的不知道为什么我这么挣扎。我正在将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}";
答案 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")
只是为了澄清字符串上的“==”是比较内存地址而不是实际的字符串值。所以你可以使用“==”但它不会产生你期望的值。