任何人都可以指出我的第一个是如何工作而第二个不工作?我很困惑为什么第二个if子句不起作用。我想得到一个提示,谢谢。
String msg = o.getTweet();
if (msg.indexOf("&") > 0) {
msg = msg.replaceAll("&", "&");// vervangt & door &
}
if (msg.indexOf(""") > 0) {
msg = msg.replaceAll(""", "aa"); //vervangt " door "
}
答案 0 :(得分:16)
因为ZERO
是非常有效的索引。试试这个,
String msg = o.getTweet();
if (msg.indexOf("&") != -1) {
msg = msg.replaceAll("&", "&");// vervangt & door &
}
if (msg.indexOf(""") != -1) {
msg = msg.replaceAll(""", "aa"); //vervangt " door "
}
<强>解释强>
String.indexOf(String str)
的文档解释说,“如果字符串参数作为此对象中的子字符串出现,则返回第一个此类子字符串的第一个字符的索引;如果不发生作为子字符串,返回-1。“ - [link to docs]
msg = msg.replace("&", "&").replace(""", "\"");
有用的链接:
答案 1 :(得分:11)
如果找不到子字符串,则不需要检查子字符串是否存在,replace
和replaceAll
方法是无操作。由于您不是在寻找正则表达式,因此您也可以使用replace
而不是replaceAll
- 它会更有效率,如果您还想检查发生的其他字符串,也不会让您感到惊讶包含正则表达式特殊字符。
msg = msg.replace("&", "&").replace(""", "\"");
请注意,replace
确实会替换所有匹配,就像您想要的那样。 replace
和replaceAll
之间的区别在于arg是否被解释为正则表达式。