JS显示列表的特定行的最快方法是什么?

时间:2018-12-15 13:14:22

标签: javascript filter split

在我的Javascript代码中,我得到了很长的一行作为字符串。 这一行只有大约65'000个字母。示例:

config=123&url=http://localhost/example&path_of_code=blablaba&link=kjslfdjs...

我要做的是先全部替换&并加一个空格(\ n),然后仅选择以“ path_of_code =“ 开头的行。这行我必须写一个变量。

带有替换&并带有中断(\ n)的部分我已经知道了,但是第二项任务却没有。

    var obj = document.getElementById('div_content');
    var contentJS= obj.value;
    var splittedResult;
    splittedResult = contentJS.replace(/&/g, '\n');

最快的方法是什么?请注意,列表通常很长。

3 个答案:

答案 0 :(得分:1)

听起来您想提取&path_of_code=之后的文本,直到字符串的末尾或下一个&。通过使用捕获组的正则表达式,然后使用该捕获组的值,可以很容易地做到这一点:

var rex = /&path_of_code=([^&]+)/;
var match = rex.exec(theString);
if (match) {
    var text = match[1];
}

实时示例:

var theString = "config=123&url=http://localhost/example&path_of_code=blablaba&link=kjslfdjs...";
var rex = /&path_of_code=([^&]+)/;
var match = rex.exec(theString);
if (match) {
    var text = match[1];
    console.log(text);
}

答案 1 :(得分:1)

  
    

但是我没有做的第二个任务。

  

您可以使用filter()startsWith()

splittedResult = splittedResult.filter(i => i.startsWith('path_of_code='));

答案 2 :(得分:1)

使用String.indexOf()String.substr()的组合

var contentJS= "123&url=http://localhost/example&path_of_code=blablaba&link=kjslfdjs...";

var index = contentJS.indexOf("&path_of_code"),
    substr = contentJS.substr(index+1),
    res = substr.substr(0, substr.indexOf("&"));

console.log(res)