когда я нажимаю Enter на <textarea>счетчик слов не показывает слово - PullRequest
0 голосов
/ 06 апреля 2020

Ссылка на проект Codepen

Как я могу изменить регулярное выражение для подсчета слова, которое кто-либо вводит, пишет что-то на этом

(countWords=()=>{
	s = document.getElementById("inputString").value;
	s = s.replace(/(^\s*)|(\s*$)/gi,"");
	s = s.replace(/[ ]{2,4}/gi," ");
	s = s.replace(/\n /,"\n");
	document.getElementById("wordcount").value = s.split(' ').length;

})()
<textarea name="inputString" id="inputString" cols="50" rows="4">Text to count</textarea>
<br>
<input type="button" name="Convert" value="Count Words" onClick="countWords();"> 
<input name="wordcount" id="wordcount" type="text" value="" size="6">

1 Ответ

1 голос
/ 06 апреля 2020

Вы можете удалить пробел из начала / конца с помощью trim(), а затем разделить с помощью 1+ пробельных символов:

s.trim().split(/\s+/).length

Или вы можете использовать подход с подходом для подсчета всех порций непробельных символов:

document.getElementById("wordcount").value = s.match(/\S+/g)?.length || 0;

JS демо (с дополнительной цепочкой):

(countWords=()=>{
  s = document.getElementById("inputString").value;
  document.getElementById("wordcount").value = s.match(/\S+/g)?.length || 0;
})()
<textarea name="inputString" id="inputString" cols="50" rows="4">Text to count</textarea>
<br>
<input type="button" name="Convert" value="Count Words" onClick="countWords();"> 
<input name="wordcount" id="wordcount" type="text" value="" size="6">

JS демо (без дополнительной цепочки):

(countWords=()=>{
  s = document.getElementById("inputString").value;
  var m =  s.match(/\S+/g);
  document.getElementById("wordcount").value = (m ? m.length : 0);
})()
<textarea name="inputString" id="inputString" cols="50" rows="4">Text to count</textarea>
<br>
<input type="button" name="Convert" value="Count Words" onClick="countWords();"> 
<input name="wordcount" id="wordcount" type="text" value="" size="6">
...