使用javascript基于分隔符拆分字符串

时间:2014-02-04 10:53:35

标签: javascript string node.js delimiter

您好我正在尝试基于多个分隔符拆分字符串。下面是代码

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

我被困在这里不知道我哪里出错了。任何帮助将不胜感激。

3 个答案:

答案 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);