如何使用Java在字符串中用空格替换多个单词

时间:2014-04-27 16:57:21

标签: java regex

我尝试使用以下代码替换给定字符串中的单词列表。

String Sample = " he saw a cat  running of that pat's mat ";
String regex = "'s | he | of | to | a | and | in | that";
Sample = Sample.replaceAll(regex, " ");

输出

[ saw cat  running that pat mat ] 
// minus the []

它仍然有最后一个字"那"。无论如何还要修改正则表达式以考虑最后一个单词。

3 个答案:

答案 0 :(得分:2)

尝试:

String Sample = " he saw a cat running of that pat's mat remove 's";
String resultString = Sample.replaceAll("\\b( ?'s|he|of|to|a|and|in|that)\\b", "");
System.out.print(resultString);
  看到猫跑去拍拍垫

<强> 样本

http://ideone.com/Yitobz

答案 1 :(得分:1)

问题是您有连续的单词要替换。

例如,考虑子串

[ of that ]

replaceAll正在运行时,[ of ]匹配

[ of that ]
 ^  ^

将替换为(空格)。要匹配的下一个字符是t,而不是

预期的空格
... | that | ...

我认为你可以做的就是添加单词边界而不是空格。

String regex = "'s\\b|\\bhe\\b|\\bof\\b|\\bto\\b|\\ba\\b|\\band\\b|\\bin\\b|\\bthat\\b";

Tuga's answer中显示的较短版本。

答案 2 :(得分:0)

它不起作用,因为你删除了&#34; &#34;首先是部分,然后在&#34;之前没有空间。单词,因为你删除了它(被替换)

你可以通过两种方式改变:

String regex =&#34;&#39; s |他|的|到| a |和|在|该&#34 ;;

String regex =&#34;&#39; s |他|的到| a |和| in | that&#34;;

或者您只需调用Sample = Sample.replaceAll(正则表达式,&#34;&#34;);再次