[英]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.