Java在缩写后用String中的空格替换新行

时间:2018-05-27 14:31:22

标签: java regex string

每当我在一个句子中找到缩写词(比如Mr.,prf。等)时,我想删除' \ n'每个句子末尾包含缩写词的字符。欢迎任何想法。INPUT OUTPUT

到目前为止我的想法是:

List<String> pres = Arrays.asList("dl","Dl", "Prf", "Ing");
for(int i=1;i<4;i++){
    if (z.contains(pres.get(i)))
        f=z.indexOf(pres.get(i));
    z.replaceFirst("\\n"," ");//how i can use my f here to get rid of next new line...?
}

2 个答案:

答案 0 :(得分:0)

这是一个近似解决方案,但不知道您要检查的完整缩写列表。您可以搜索以下模式,并替换为第一个捕获组:

((?:Mr|Mrs|Dr)\.[^.]+\.)\n

这将识别任何句子中的 last 缩写,该句子以点结尾,后面紧跟\n换行符。请注意,在单个句子中有多个缩写的情况下,它只会匹配最后一个缩写。

String input = "Here is a sentence.  Said Mrs. Canopoy, here is another sentence about Mr. Potato Head.\r\nHere is a third sentence.";
System.out.println(input);
input = input.replaceAll("((?:Mr|Mrs|Dr)\\.[^.]+\\.)\\r\\n", "$1");
System.out.println(input);

Demo

我只检查Mr.Mrs.Dr.,但您可以根据需要添加任意数量的缩写。

答案 1 :(得分:0)

请使用:

String s = "Mike and Mr.\nDave take dinner.\nThat is very important.\nMe and Ing.\nMike bla bla..";
s = s.replaceAll("(Mr.|Ing.)\n", "$1 ");