在javascript中遍历字符串

时间:2014-01-13 14:13:14

标签: javascript function substring performance

我有很多字符串连接在一起

"[thing 1,thing 2,cat in the hat,Dr. Suese]"

我想遍历此字符串以停止在特定的逗号(给定索引)并在逗号之后和下一个逗号之前立即返回子字符串。问题是我需要在JavaScript中完成它。我认为它会是这样的

function returnSubstring(i,theString){
    var j,k = 0;
    while(theString.charCodeAt(k) != ','){
        while(i > 0){
            if (theString.charCodeAt(j) == ','){
                i--;
            }
            j++;
        }
        k++;
    }
    return theString.substring(j,k);
}

这应该是什么样的,或者这里有一些语法问题

2 个答案:

答案 0 :(得分:2)

您可以split

var token = "[thing 1,thing 2,cat in the hat,Dr. Suese]"
    .slice(1,-1) // remove [ and ]
    .split(',')
    [2]; // the third token

或者使用正则表达式:

var token = "[thing 1,thing 2,cat in the hat,Dr. Suese]"
    .match(/([^\]\[,]+)/g)
    [2];

答案 1 :(得分:2)

  

我想遍历此字符串以停止在特定的逗号(给定索引)并在逗号之后和下一个逗号之前立即返回子字符串。

- >让我们假设逗号的特定索引是8,即第一个逗号索引,你可以这样做:

var givenCommaIndex = 8;
var value = "[thing 1,thing 2,cat in the hat,Dr. Suese]";
var subString = value.substring(givenCommaIndex+1, value.indexOf(",", givenCommaIndex+1));
console.log(subString);

// Output :
"thing 2"

我可以编写如下所示的可重用函数,它不仅适用于逗号,也适用于其他分隔符:

function getSubString(str, delimiter, indexOfDelimiter) {
    // TODO : handle specific cases like str is undefined or delimiter is null
    return str.substring(indexOfDelimiter+1, str.indexOf(delimiter, indexOfDelimiter+1));
}