Как удалить все типы префиксов приветствия из строки в java? - PullRequest
0 голосов
/ 07 апреля 2020

Предположим, у меня есть строка из Input с именем (например: Mr . Aditya Jha). Как убрать приветствие с начала ввода?

Список приветствий, которые могут прийти:

Mr, Mrs, Dr, Miss, Ms, Rev, Mr. , Mr. , Dr. , Miss. , Ms. , Rev. , Mr . , Mr . , Dr . , Miss . , Ms . , Rev .

Любое решение или выражение регулярного выражения, которое может рассмотреть все эти приветствия?

Я пробовал это:

name.replaceAll("\\s{2,}", " ").replaceFirst("(?i)(Mr . )", "").replaceFirst("(?i)(Mr |Mr. )", "").trim()

Это работает, но для имени, подобного amra khan, оно удаляет mr.

1 Ответ

1 голос
/ 10 апреля 2020

Вы можете использовать

name = name.replaceAll("\\s{2,}", " ").replaceFirst("(?i)^\\s*(?:M(?:iss|rs?|s)|Dr|Rev)\\b[\\s.]*", "").trim();

См. Демоверсию regex

Детали шаблона

  • (?i) - опция игнорирования регистра
  • ^ - начало строки
  • \s* - 0+ пробелов
  • (?:M(?:iss|rs?|s)|Dr|Rev) - M, за которыми следует iss, r, rs, s или Dr или Rev (вы можете добавить больше после | здесь)
  • \b - граница слова
  • [\s.]* - 0 или более пробелов или точек.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...