如何摆脱Javascript字符串中动态指定位置后的所有字符

时间:2018-04-16 16:24:40

标签: javascript arrays string parsing

给出一个字符串:

address = "Tomorrowland, Orlando, FL 32836, USA"

为了摆脱邮政编码和国家/地区,您如何删除超过第二个逗号的特定长度的所有字符串? (输出如下所示)

"Tomorrowland, Orlando, FL"

我知道您可以使用粗暴的表单解决方案,例如

for(var i = 0; i<address.length;i++){
    if(address[i] == ','){ 
          var number = i+3; 
    }
    //get rid of everything past address[number]
}

但这似乎不太理想。

4 个答案:

答案 0 :(得分:1)

使用限制为3的split,然后加入然后删除尾随邮政编码

let addresses = ["Tomorrowland, Orlando, FL 32836, USA", "Tomorrowland 05, Orlando, FL 32836, USA", "Tomorrowland, Orlando, FL 32836, USA, The World"]

addresses.forEach(address => {
  console.log(address.split(',', 3).join(',').replace(/[0-9\-\s]+$/g, ''))
})

答案 1 :(得分:1)

按空格分割地址并将结果的前三个元素连接在一起

let address = "Tomorrowland, Orlando, FL 32836, USA"

let result = address.split(' ', 3).join(' ');


console.log(result)

答案 2 :(得分:1)

如果地址中的唯一数字出现在ZipCode中,您可以使用JavaScript中的RegEx函数,例如string.match(regex)

&#13;
&#13;
let address = "Tomorrowland, Orlando, FL 32836, USA"

truncated_addr = address.match(/^\w[^0-9]+/);
console.log(truncated_addr[0]);
&#13;
&#13;
&#13;

答案 3 :(得分:1)

使用RegExp replace()方法:

/\s\d.*/g or /\s[0-9]{5}-?[0-9]{0,4}.*/g

/开始正则表达式

\s一个空白

\d{5}连续5个号码

\D任何非数字字符

*零次或多次

/结束正则表达式

g全局标记(在第一次匹配后,它将一直持续到行尾)

如果您可能有或没有查找代码,则第二个更详细的版本。

[0-9]{5}连续5个号码。

-?表示零或一个连字符

[0-9]{0,4}零至4个连续数字

\D*任意数量的任何非数字字符。

replace()会找到一个匹配项,并将其替换为''(2个连续引号)。

演示

var address0 = "Tomorrowland, Orlando, FL 32836, USA";

var address1 = "Tomorrowland, Orlando, FL 32836-6145, USA";

var str0 = address0.replace(/\s\d{5}\D*/g, '');

var str1 = address1.replace(/\s[0-9]{5}-?[0-9]{0,4}\D*/g, '');

console.log(str0);

console.log(str1);