如何用逗号替换中间的fullstops?

时间:2016-06-28 06:40:04

标签: java regex shell

我试图用逗号代替中间句点和感叹号,即(。,!)。当我尝试时,我的代码用逗号(,)代替所有的fullstops(。),但是,我不想更改结束的fullstop。

String txt="When I'm bored, I eat. When I'm happy, I eat. When I'm sad, I eat.";

txt = txt.replaceAll("[^\\x00-\\x7f-\\x80-\\xad]", ""); //replaces emojies

//String a=txt.replaceAll("[.!]", ","); //replaces comma or exclamation

System.out.println(txt);

输出线路输出:

When I'm bored, I eat. When I'm happy, I eat. When I'm sad, I eat.

使用代码输入(and println(a)):

When I'm bored, I eat, When I'm happy, I eat, When I'm sad, I eat,

2 个答案:

答案 0 :(得分:1)

您想使用negative lookahead

[\.!](?<!$)

那就是:每当点或感叹号出现在不在字符串末尾的地方时,请更换。

String a=txt.replaceAll("[\.!](?<!$)", ",");

请参阅表达式及其匹配方式:http://www.rubular.com/r/L5oSf1aCa5

答案 1 :(得分:0)

您可以使用子字符串,进行替换并将其重新连接起来。

String txt =“当我无聊时,我会吃。当我快乐时,我会吃。当我难过的时候,我会吃。”;

String a = txt.substring(0,java.lang.Math.max(txt.lastIndexOf('。'),txt.lastIndexOf('!')));

a = a.replaceAll(“[^ \ x00- \ x7f- \ x80- \ xad]”,“”); //替换emojies

a = a.replaceAll(“[。!]”,“,”)+ txt.substring(java.lang.Math.max(txt.lastIndexOf('。')),txt.lastIndexOf('!') ),txt.length()); //替换逗号或感叹号

的System.out.println(a)的