Количество вхождений строки в текст
Как обычно, понадобилось, а нигде нет, везде про "количество вхождений символа в строку", особой практической ценности не имеющее.
Код примерно как для слияния строк, нативный Javascript без попытки поиска решения крутыми и медленными функциями массивов. Есть режим сравнения строк с игнорированием всех разделителей.
Ниже показан сервис в работ и его код (без обрамления HTML, предполагается использование кодировки Юникода UTF-8).
<form name="multilineTextForm"> <p>Введите или вставьте текст:</p> <p><textarea id="multilineText" name="multilineText" rows="12" cols="80"></textarea></p> <p>Искомая строка:</p> <p><input type="text" size="80" id="oneLineString" name="oneLineString"></p> <p> <input type="checkbox" id="ignoreSpaces" name="ignoreSpaces"> <label for="ignoreSpaces">Игнорировать разделители</label> </p> <p> <input type="button" value="Обработать" onclick="doAction();"> <input type="button" value="Очистить" onclick="doClear();"> </p> <p id="resultString"></p> </form> <script type="text/javascript"> function removeAllSpaces (p) { return p.replace (/\s+/g, ''); } function doAction () { let text = document.getElementById('multilineText').value; let arr = text.split("\n"); let result = 0; let len = arr.length; let check = document.multilineTextForm.ignoreSpaces.checked; let str = document.getElementById('oneLineString').value; if (check==true) str = removeAllSpaces(str); if (str.length<1) { document.getElementById('resultString').innerHTML = 'Строка поиска пуста'; return; } for (let i=0; i<len; i++) { //обработаем строки по одной let s = (check==true ? removeAllSpaces(arr[i]) : arr[i]); if (s.length>0 && s==str) result++; } document.getElementById('resultString').innerHTML = 'Количество вхождений='+result; } function doClear() { document.multilineTextForm.multilineText.value=''; document.multilineTextForm.oneLineString.value=''; document.getElementById('resultString').innerHTML=''; document.multilineTextForm.ignoreSpaces.checked=false; } </script> <noscript> <p>Нужно включить в браузере Javascript для работы приложения</p> </noscript>
07.11.2020, 12:44 [1179 просмотров]