Java заменяет новую строку пробелом в строке после сокращений - PullRequest
0 голосов
/ 27 мая 2018

Всякий раз, когда я нахожу аббревиатуру в предложении (например, Mr., prf. И т. Д.), Я хотел бы удалить символ '\ n' в конце каждого предложения, которое содержит сокращенное слово.Любые идеи приветствуются. ВХОДНОЙ ВЫХОД

Моя идея до сих пор:

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 голосов
/ 27 мая 2018

Просто используйте это:

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 ");
0 голосов
/ 27 мая 2018

Вот примерное решение, не зная полного списка сокращений, которые вы хотите проверить.Вы можете выполнить поиск по следующему шаблону и заменить его первой группой захвата:

((?: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);

Демонстрация

Я проверяю только на Mr., Mrs. или Dr., но вы можете добавить к чередованию столько аббревиатур, сколько захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...