JS Какой самый быстрый способ отобразить одну конкретную строку списка? - PullRequest
0 голосов
/ 15 декабря 2018

В моем коде 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 голосов
/ 15 декабря 2018

но второе задание я не выполнил.

Можно использовать filter() и startsWith()

splittedResult = splittedResult.filter(i => i.startsWith('path_of_code='));
0 голосов
/ 15 декабря 2018

Используйте комбинацию 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)
0 голосов
/ 15 декабря 2018

Звучит так, будто вы хотите извлечь текст после &path_of_code= вплоть до конца строки или следующего &.Это легко сделать с помощью регулярного выражения, используя группу захвата, затем используя значение этой группы захвата:

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

Live Пример:

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);
}
...