JavaScriptのフィールドの単語の数を数える方法
6064 ワード
HTML入力フィールドの単語の数を計算するには、まず入力のイベントリスナーを作成し、入力を行うたびに入力フィールドを監視します.
ケースワン
私はちょうどスペースボタンを押し続けるか?
そのように、配列は増加し続けます、そして、配列の値は空です("").解決策は、確かにはい!このアプローチでこの問題を解決することができない理由は、実際に文字列を配列に変換するためには、何かによって分割する必要があります.スペース('')等
あなたが知っているように、言葉はスペースによって切り離されます.うん.しかし、配列が空の値(空白部分)を含まないことを言うならば、どうでしょう.以下に解決策を示します.
ユーザーが遭遇する別の問題は、ユーザーがフィールドの値をクリアするときです.配列によって返されるこのような全長は、(入力フィールドが空の場合)1つになりますが、上記のフィルタリングで解決されます.
我々が利用する前に
今、質問があった、誰かが私のブラウザの自動補完で動作するように頼んだ?
確かにはい!自動補完は、10個以下の単語を一緒に持ち、一度にフィールドに入力します.しかし、我々のイベントリスナーは
症例2 :
正規表現
const textArea = document.querySelector('textarea'); // textarea or input
textArea.addEventListener('input', calculateWords);
The calculateWords()
関数は単語を計算する関数です.今、単語を計算する1つまたは複数の方法で行うことができます.我々は、ちょうど2を与えます.ケースワン
function calculateWords(e) {
return e.target.value.split(' ').length;
}
はい!つまり、入力フィールドの値をスペースで配列に分割し、配列の全長を計算するだけです.言い換えれば、最後の単語が後にスペースがあるときに配列に追加されます.はい!現在のように効率的ではない私はちょうどスペースボタンを押し続けるか?
そのように、配列は増加し続けます、そして、配列の値は空です("").解決策は、確かにはい!このアプローチでこの問題を解決することができない理由は、実際に文字列を配列に変換するためには、何かによって分割する必要があります.スペース('')等
あなたが知っているように、言葉はスペースによって切り離されます.うん.しかし、配列が空の値(空白部分)を含まないことを言うならば、どうでしょう.以下に解決策を示します.
function calculateWords(e) {
const splitArr = e.target.value.split(' ');
const newSplitArr = splitArr.filter((value) => {
return value; // returning values with content
});
console.log(newSplitArr);
}
そこに行く問題が解決.ユーザーが遭遇する別の問題は、ユーザーがフィールドの値をクリアするときです.配列によって返されるこのような全長は、(入力フィールドが空の場合)1つになりますが、上記のフィルタリングで解決されます.
我々が利用する前に
filter()
スペースボタンをクリックすると、単語数が増加します.つまり第一にcalculateWords()
関数はスペースで単語を決定するが、新しい単語はその単語の先頭にある単語を決定する.2つのテストを試してみてください今、質問があった、誰かが私のブラウザの自動補完で動作するように頼んだ?
確かにはい!自動補完は、10個以下の単語を一緒に持ち、一度にフィールドに入力します.しかし、我々のイベントリスナーは
oninput
言い換えると、それはフィールドに入ってくるすべての入力を見ます.入力がなされた限りcalculateWords()
関数は喜んで言葉の数を計算します.症例2 :
正規表現
function calculateWords(e) {
return e.target.value.match(/\S+/g).length;
}
私は正規表現があまり得意ではありませんが、誰かが私にこれを代替案として提案しました.そして、私がテストしたとき、フィールドが完全にクリアされるたびに、それはエラーを返します.エラーはmatch()
メソッドがNULLである(フィールドが空であるため)null
エラーを返します.既に解決策は簡単で、私に同意しますfunction calculateWords(e) {
const fieldValue = e.target.value;
let numOfWords;
fieldValue
? (numOfWords = fieldValue.match(/\S+/g).length)
: (numOfWords = 0);
console.log(numOfWords);
}
そこには2つのケースをテストしてみてください.二つは100 %働く.Reference
この問題について(JavaScriptのフィールドの単語の数を数える方法), 我々は、より多くの情報をここで見つけました https://dev.to/elijahtrillionz/how-to-count-the-number-of-words-of-a-field-in-javascript-2cj0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol