您好我正在尝试基于多个分隔符拆分字符串。下面是代码
var data="- This, a sample string.";
var delimiters=[" ",".","-",","];
var myArray = new Array();
for(var i=0;i<delimiters.length;i++)
{
if(myArray == ''){
myArray = data.split(delimiters[i])
}
else
{
for(var j=0;j<myArray.length;j++){
var tempArray = myArray[j].split(delimiters[i]);
if(tempArray.length != 1){
myArray.splice(j,1);
var myArray = myArray.concat(tempArray);
}
}
}
}
console.log("info","String split using delimiters is - "+ myArray);
以下是我得到的输出
a,sample,string,,,,This,
我应该得到的输出是
This
a
sample
string
我被困在这里不知道我哪里出错了。任何帮助将不胜感激。
答案 0 :(得分:1)
如here所述,您可以将正则表达式传递到data.split()
。
我对regexp不太满意,但在这种情况下,这样的事情会起作用:
var tempArr = [];
myArray = data.split(/,|-| |\./);
for (var i = 0; i < myArray.length; i++) {
if (myArray[i] !== "") {
tempArr.push(myArray[i]);
}
}
myArray = tempArr;
console.log(myArray);
我确信可能有一种方法可以在regexp中丢弃数组中的空字符串,而不需要循环,但我不知道 - 希望这是一个有用的开始。
答案 1 :(得分:0)
检查字符串长度&gt;在进行连续之前为0,而不是!= 1
。
零长度字符串将附加到您的数组。
答案 2 :(得分:0)
你走了:
var data = ["- This, a sample string."];
var delimiters=[" ",".","-",","];
for (var i=0; i < delimiters.length; i++) {
var tmpArr = [];
for (var j = 0; j < data.length; j++) {
var parts = data[j].split(delimiters[i]);
for (var k = 0; k < parts.length; k++) {
if (parts[k]) {
tmpArr.push(parts[k]);
}
};
}
data = tmpArr;
}
console.log("info","String split using delimiters is - ", data);