繁体   English   中英

JavaScript 用空格分割字符串

[英]JavaScript split String with white space

我想拆分一个字符串,但我想保留空白,例如:

var str = "my car is red";

var stringArray [];

stringArray [0] = "my";
stringArray [1] = " ";
stringArray [2] = "car";
stringArray [3] = " ";
stringArray [4] = "is";
stringArray [5] = " ";
stringArray [6] = "red";

我如何才能继续这样做?

谢谢 !

使用正则表达式:

var str   = "my car is red";
var stringArray = str.split(/(\s+)/);

console.log(stringArray); // ["my", " ", "car", " ", "is", " ", "red"] 

\\s匹配任何作为空格的字符,添加加号使其贪婪,匹配以字符开头并以空格结尾的组,当空格后面有一个字符时,下一组开始等。

您可以在空白处拆分字符串,然后重新添加它,因为您知道它位于每个条目之间。

var string = "text to split";
    string = string.split(" ");
var stringArray = new Array();
for(var i =0; i < string.length; i++){
    stringArray.push(string[i]);
    if(i != string.length-1){
        stringArray.push(" ");
    }
}

更新:删除了尾随空格。

对于像 Python lang 那样按空格分割字符串,可以使用:

var w = "hello    my brothers    ;";
w.split(/(\s+)/).filter( function(e) { return e.trim().length > 0; } );

输出:

["hello", "my", "brothers", ";"]

或类似:

w.split(/(\s+)/).filter( e => e.trim().length > 0)

(输出一些)

您可以使用\\b在单词边界上进行拆分。 MDN

“\\b:匹配零宽度的单词边界,例如字母和空格之间。”

您还应该确保其后跟空格\\s 所以像"My car isn't red"这样的字符串仍然有效:

var stringArray = str.split(/\b(\s)/);

初始\\b需要考虑多个空格,例如my car is red

编辑:添加分组

尽管并非所有浏览器都支持这种方式,但如果您在正则表达式中使用捕获括号,则捕获的输入将拼接到结果中。

如果separator是一个包含捕获括号的正则表达式,那么每次匹配separator时,将捕获括号的结果(包括任何未定义的结果)拼接到输出数组中。 [ 参考]

所以:

var stringArray = str.split(/(\s+)/);
                             ^   ^
//

输出:

["my", " ", "car", " ", "is", " ", "red"]

这会折叠原始输入中的连续空格,但除此之外我想不出任何陷阱。

str.split(' ').join('§ §').split('§');

如果你确定两个单词之间只有一个空格,你可以使用这个

str.replace(/\\s+/g, ' ').split(' ')

所以你用两个替换一个空格,按空格分割

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM