带空格的JavaScript分割字符串
我想拆分字符串,但我想保留空白,如:带空格的JavaScript分割字符串,javascript,arrays,split,Javascript,Arrays,Split,我想拆分字符串,但我想保留空白,如: 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 [];
stringArray [0] = "my";
stringArray [1] = " ";
stringArray [2] = "car";
stringArray [3] = " ";
stringArray [4] = "is";
stringArray [5] = " ";
stringArray [6] = "red";
我怎样才能继续这样做呢
谢谢 您可以在空白处拆分字符串,然后重新添加,因为您知道它位于每个条目之间
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(" ");
}
}
var string=“要拆分的文本”;
string=string.split(“”);
var stringArray=新数组();
对于(变量i=0;i
更新:删除尾随空格。使用正则表达式:
var str = "my car is red";
var stringArray = str.split(/(\s+)/);
console.log(stringArray); // ["my", " ", "car", " ", "is", " ", "red"]
\s
匹配任何空白字符,加上加号会使其变得贪婪,匹配以字符开头、以空白结尾的组,下一组在空白后面有字符时开始,等等。您可以使用\b
在单词边界上拆分。看
\b:匹配零宽度字边界,例如字母和空格之间的边界
您还应该确保它后面有空格\s
。所以像“我的车不是红色的”
这样的字符串仍然有效:
var stringArray = str.split(/\b(\s)/);
初始的\b
需要考虑多个空格,例如我的车是红色的
编辑:添加分组虽然并非所有浏览器都支持这一点,但如果在正则表达式中使用捕获括号,则捕获的输入将拼接到结果中 如果分隔符是包含捕获括号的正则表达式,则每次匹配分隔符时,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组中。[) 因此: 输出:
["my", " ", "car", " ", "is", " ", "red"]
这会压缩原始输入中的连续空格,但除此之外,我想不出任何陷阱。对于Python lang中的按空格拆分字符串,可以使用:
str.split(' ').join('§ §').split('§');
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)
(输出一些)如果您确定两个单词之间只有一个空格,您可以使用这个空格
str.replace(/\s+/g')。split(“”)
因此,将一个空格替换为两个,按空格分割,然后删除尾随空格。使用双空格时,这根本不起作用。
“要分割的文本”
(在“文本到”之间有两个空格)=>[“文本”,“文本”,“文本”,“拆分”,“拆分”,“拆分”,“拆分”]@Rhumborl不,它不包含,您可以将其内置,但它会按照tin上的说明进行操作。自然文本不包含双空格。但是,如果您需要,可以添加If(string[i]==“”)继续;
在循环开始时忽略任何空值。嗯,这实际上是可行的。你能解释一下过滤器
在做什么吗?乍一看它似乎是无效的,因为过滤器
回调应该返回真或假。你是救命恩人。我的p具体情况!您可能希望:var stringArray=str.split(/\s+/);在数组中不包含空格。@运行_比赛您能解释一下他为什么保留空格吗?@MinhNghĩa“如果分隔符是包含捕获括号()的正则表达式,则匹配的结果将包含在数组中。”我不建议这样做。\b
不仅匹配字母和空格:例如,它还匹配字母和标点符号之间的边界。“Bob的电子邮件是a@b.com“
变为[“Bob”、“b”、“s”、“e”、“-”、“mail”、“is”、“a”、“@”、“b”、“com”]
@Shai true,也添加了空格检查w.split(/(\s+/).filter(e=>e.length>1)
w.split(/(\s+)/).filter( e => e.trim().length > 0)