我正在尝试编写一种方法,将此字符串分成两个单独的变量。城市名称可以是一个或多个单词,状态将始终跟在城市名称的最后一个单词之后。
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"
实际结果:无
最佳答案
您可以使用
匹配这些字符串/.*?\b[A-Z]{2}\b/g
参见 regex demo .
注意:如果您想精确匹配美国各州,您可以替换 [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+$/, ',$&'));
关于javascript - 我将如何使用 javascript 将包含两个城市(及其状态)的字符串分隔到它们自己的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56688821/