Разделение названий улиц с помощью c # / regex - PullRequest
0 голосов
/ 06 декабря 2018

В настоящее время я борюсь (впервые) с регулярным выражением.

Моя цель - разделить несколько названий улиц, разделенных символом "/".Есть некоторые особые вещи, на которые стоит обратить внимание.Могут быть пробелы до и после "/", а после косой черты должна быть буква, а не цифра (потому что иногда номера домов также разделяются косой чертой.

Я почти достиг целиВ настоящее время он разделяется так, как мне хочется, когда в строке есть только два названия улиц, но у меня три проблемы с названиями улиц (это разделяется только один раз.)

Мои текущие две попытки регулярных выражений выглядят так:

  • /. ([A-Za-z] +). *? (Отлично работает, но только с двумя улицами, игнорируя дополнительные)
  • /. ([A-Za-z] +). * (Работает с несколькими улицами, но останавливается после пробела в названиях улиц

Для большей ясности я добавил несколько скриншотов:

Image1

На этом скриншоте я делю так, как хочу (но делит только один раз и игнорирую третью улицу).

Iamge2

На этом втором скриншоте я добавил "?"в конце регулярного выражения. Теперь он рассматривает третью улицу, но сократить это вторая улицапосле пробела.

Надеюсь, вы можете мне помочь.

1 Ответ

0 голосов
/ 06 декабря 2018
int z = 0;
string[] arr = new[]
{
    "Street name 1 / Street name 2 / Street name 3",
    "Street name 1 /Street name 2",
    "Street name 1 / 2"
};
string pattern = @"(?i)\s*/\s*(?=[a-z])";

foreach (var x in arr)
{
    WriteLine($"Record {++z}");
    var streets = Regex.Split(x, pattern);
    foreach (var street in streets)
    {
        WriteLine("\t" + street);
    }
}
/* 
   Output:

   Record 1
      Street name 1
      Street name 2
      Street name 3
   Record 2
      Street name 1
      Street name 2
   Record 3
      Street name 1 / 2
*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...