我试图用逗号代替中间句点和感叹号,即(。,!)。当我尝试时,我的代码用逗号(,)代替所有的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,
答案 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)的