Как бы я использовал JavaScript, чтобы разделить строку с двумя городами (и их штатами) на их собственные переменные? - PullRequest
1 голос
/ 20 июня 2019

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

var splitFlightInfo = "LOS ANGELES CA MIAMI FL"

var temp;
var theFlightInfo = splitFlightInfo.shift().split(" ");
var theflightDate = theFlightInfo.shift();
var theFlightArrive = theFlightInfo.pop();
var theFlightDepart = theFlightInfo.pop();
var theFlightPorts = splitFlightInfo.shift();

for(var p = 0; p < theFlightInfo.length; p++){
  if(p === 0){
    temp = theFlightInfo[p];
  } else{
    temp += ' '+theFlightInfo[p];
  }
}

Ожидаемые результаты:

var departPort = "Los Angeles, CA"
var arrivePort = "Miami, FL"

Фактические результаты: нет

1 Ответ

1 голос
/ 20 июня 2019

Вы можете сопоставить эти строки, используя

/.*?\b[A-Z]{2}\b/g

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

ПРИМЕЧАНИЕ : Если вы хотите точно соответствовать штатам США, вы можете заменить [A-Z]{2} на (?:AL|AK|AZ|AR|CA|CO|CT|DE|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY):

/.*?\b(?:AL|AK|AZ|AR|CA|CO|CT|DE|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY)\b/g

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

  • .*? - любые 0+ символов, кроме символов перевода строки, как можно меньше
  • \b[A-Z]{2}\b - целое слово, состоящее из двух заглавных букв.

Затем добавьте запятую перед последними 1+ пробелами + 1+ непробелами с .replace(/\s+\S+$/, ',$&').

JS демо:

var regex = /.*?\b[A-Z]{2}\b/g;
var str = "LOS ANGELES CA MIAMI FL";
var res = str.match(regex);
console.log(res[0].trim().replace(/\s+\S+$/, ',$&'));
console.log(res[1].trim().replace(/\s+\S+$/, ',$&'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...