WedX - журнал о программировании и компьютерных науках

Как удалить номер дома и подъезд из адресной строки с помощью регулярного выражения?

У меня есть различные адресные строки, которые я хотел бы автоматически очистить от части номера дома, оставив только адрес улицы.

примеры:

  • вход:
"15A W 131st St, New York, NY 10037, USA"
  • желаемый результат:
"W 131st St, New York, NY 10037, USA"

  • вход:
"125 E 145th St, New York, NY 10037, USA"
  • желаемый результат:
"E 145th St, New York, NY 10037, USA"

  • вход:
"3 Rue Auguste Bartholdi, 75015 Paris, France"
  • желаемый результат:
"Rue Auguste Bartholdi, 75015 Paris, France"

Я пытался работать с String.prototype.match() и следующим регулярным выражением: /[^0-9\s].+/, которое хорошо работает для удаления чисел, но не работает, если в здании есть буквенный вход (35A, 20B и т. д.). Работа с буквенным символом вызвала у меня проблемы с остальной частью строки.

12.08.2019

  • Всегда ли будут первые x символов, за которыми следует пробел? Может быть, вы можете использовать address.replace(/^[^\s]+\s/, ''). Это заменяет все от запуска до первого пробела. 12.08.2019
  • Как насчет str = str.replace(/^\d+\W+/, ''); 12.08.2019
  • ^\d+\w?\s работает со всеми тремя примерами, приведенными выше... 12.08.2019
  • На данный момент я решил это другим подходом: let newAddress = fullAddress.split(" ").slice(1).join(" ");. Это удаляет все, что находится перед первым пробелом. Я попробую ваши предложения на игровой площадке регулярных выражений. 12.08.2019
  • Я думаю, что основная проблема заключалась в том, что я пытался выбрать остальную часть адресной строки, а не ее начало. 12.08.2019
  • еще один: /^\d+[A-z]?\s/ 12.08.2019
  • mjt.me.uk/posts/falsehoods-programmers-believe -об-адресах 13.08.2019
  • @AuxTaco о боже 13.08.2019

Ответы:


1

Моя основная проблема заключалась в том, что я пытался сопоставить остальную часть строки и сохранить ее с помощью String.match() вместо того, чтобы нацеливаться на начало строки и удалять ее с помощью String.replace().

Несколько выражений регулярных выражений, которые решаются при использовании этого String.replace()attitude:

address.replace(/^\d+[A-z]?\s/, '')
address.replace(/^[^\s]+\s/, '')

Другим решением было бы нацеливание на пробелы с помощью метода String.split(). Это означает преобразование в массив слов, удаление первого слова и объединение массива в новую чистую строку.

код:

let newAddress = fullAddress.split(" ").slice(1).join(" ");
12.08.2019

2

Лучшее решение IMO использует регулярное выражение

[^\s]+\s+

Причина лучше, чем подход split splice and join, заключается в том, что у вас есть первая строка изменения n накладных расходов в массив, а затем после манипуляции снова измените ее обратно на строку, тогда как замена просто выполняет манипуляцию без преобразования из строки в массив, а затем снова обратно в строку

let strs = ["15A W 131st St, New York, NY 10037, USA","125 E 145th St, New York, NY 10037, USA","3 Rue Auguste Bartholdi, 75015 Paris, France"]

strs.forEach(str=>{
  let final = str.replace(/^[^\s]+\s+/,'')
  console.log(final)
})

13.08.2019
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

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

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]