БлогNot. Количество вхождений строки в текст

Количество вхождений строки в текст

Как обычно, понадобилось, а нигде нет, везде про "количество вхождений символа в строку", особой практической ценности не имеющее.

Код примерно как для слияния строк, нативный 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>

теги: javascript textprocessing сервис

07.11.2020, 12:44; рейтинг: 151