如何使用replaceAll删除部分文本

时间:2013-10-12 19:34:40

标签: java replaceall

有一个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, "");,但这对文字没有任何作用?

2 个答案:

答案 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));