有一个String text
System.out.println(text);
看起来像这样
So the traveller sat down by the side of that old man,
face to face with the serene sunset;
and all his friends came softly back and stood around him.
另一个String subText
System.out.println(subText);
只是上述字符串的一部分,看起来像这样
So the traveller sat down by the side of that old man,
face to face with the serene sunset;
我需要摆脱这个subText
部分text = text.replaceAll(subtext, "");
,但这对文字没有任何作用?
答案 0 :(得分:6)
在这种特殊情况下,它并不重要,但您确实应该使用replace
代替replaceAll
:
text = text.replace(subtext, "");
replaceAll
方法使用正则表达式,有些字符具有特殊含义。
在这种特殊情况下,您不会发现任何差异,因为subtext
中必定存在微妙的差异,因此无法在text
中找到它。也许有额外的空格或换行符的编码方式不同。很难看出空白区别与System.out.println
产生的输出有关。
答案 1 :(得分:2)
它不起作用的原因是因为'replaceAll()`期望搜索词是正则表达式。
你应该使用replace()
,它使用搜索纯文本,并且偶然会替换所有出现的内容,而不是:
text = text.replace(subtext, "");
至于为什么它与replaceAll()
无法合作,谁知道呢。要进行诊断,您可以看到实际上它是否在您的文本中如下:
System.out.println(text.contains(subtext));