Когда я протестированные все, что казалось, регулярные выражения показали наилучшие результаты, поэтому я придумал этот
function indexesOf(string, regex) {
var match,
indexes = {};
regex = new RegExp(regex);
while (match = regex.exec(string)) {
if (!indexes[match[0]]) indexes[match[0]] = [];
indexes[match[0]].push(match.index);
}
return indexes;
}
вы можете сделать это
indexesOf('ssssss', /s/g);
, который будет возвращать
{s: [0,1,2,3,4,5]}
я нужен очень быстрый способ несколько символов против больших объемов текста так, например, вы могли бы сделать это
indexesOf('dddddssssss', /s|d/g);
и вы получите бы это
{d:[0,1,2,3,4], s:[5,6,7,8,9,10]}
таким образом, вы можете получить все индексы ваших матчей за один раз
Вы действительно не хотите индексов символов 1 на основе, не так ли? – Phrogz
Если у вас нет большой строки или большого количества строк, или это случается довольно часто (например, 100 секунд в секунду), то, вероятно, будет достаточно прокручивать всю строку. Важно не то, насколько это эффективно, но это [* достаточно быстро *] (http://stackoverflow.com/a/3770194/116614). – mellamokb
Обратите внимание, что позиция символов начинается с '0' (а не на' 1'), это запутывает в начале, но вы сделаете это автоматически с практикой – ajax333221