Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带空格的JavaScript分割字符串_Javascript_Arrays_Split - Fatal编程技术网

带空格的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)