Javascript / Regex:Split()在我的情况下不起作用

时间:2018-07-14 04:38:05

标签: javascript regex

当变量中的每一行前后都有空格时,split()不起作用。下面的代码应返回(123,45,67,89),但应返回(1234567,89)。 REGEX可能是问题所在,但我不知道如何解决。您的帮助将不胜感激。谢谢

 var keywordsArray = "1 2 3  \n4 5\n 6       7\n8 9";
    keywordsArray = keywordsArray.replace(/\s\s+/g,' ').split('\n');
    alert(keywordsArray);

5 个答案:

答案 0 :(得分:2)

您可以使用以下方法。

,以,(逗号)分隔:

> var result = keywordsArray.split('\n')
undefined
> result
[ '1 2 3  ', '4 5', ' 6       7', '8 9' ]
>
> result = result.map(s => s.replace(/\s+/g, ''))
[ '123', '45', '67', '89' ]
>
> result.join(',')
'123,45,67,89'
>

整数数组:

> var keywordsArray = "1 2 3  \n4 5\n 6       7\n8 9"
undefined
> keywordsArray
'1 2 3  \n4 5\n 6       7\n8 9'
>
> var result = keywordsArray.split('\n')
undefined
> result
[ '1 2 3  ', '4 5', ' 6       7', '8 9' ]
>
> result = result.map(s => parseInt(s.replace(/\s+/g, '')))
[ 123, 45, 67, 89 ]
>

答案 1 :(得分:1)

我让它与您的琴弦配合使用,可能是这很困难...一切都有计划B

var keywordsArray = "1 2 3  \n4 5\n 6       7\n8 9";
keywordsArray = keywordsArray.split('\n').map(item => item.replace(/\s/g,''));
console.log(keywordsArray.join(','));

答案 2 :(得分:1)

只需更改正则表达式模式。首先,删除所有空白。之后,将\n替换为,

var keywordsArray = "1 2 3  \n4 5\n 6       7\n8 9";
keywordsArray = keywordsArray.replace(/ */g,'').replace(/\n/g,',');
console.log(keywordsArray);

有关正则表达式的更多信息,请选中此link

答案 3 :(得分:1)

您的代码唯一的问题是,\s\n语句中也与replace匹配,因此请不要使用\s使用空格('')。

请通过上述更新找到您的代码:

var keywordsArray = "1 2 3  \n4 5\n 6       7\n8 9";
keywordsArray = keywordsArray.replace(/  +/g,' ').split('\n');
alert(keywordsArray);

答案 4 :(得分:-1)

尝试使用文字空间“”代替“ \ s”,因为

  

/ \ s / g任何空格字符

下次遇到麻烦时,请查看regex101-这真的很有帮助!