0

テキスト領域の単語、文字、行の数を数えたい。ここに私のコードがあります:これはそうするのに最適ですか?

function getStats() {
  var text = textarea.value,
    chars = text.length,
    words = text.split(/\S+/g).length - 1,
    lines = text.split("\n").length;
  return lines + " lines, " + words + " words, " + chars + " chars";
}

修正はありますか?

4

4 に答える 4

5
function getStats() {
  var text = textarea.value,
    chars = text.length,
    words = text.split(/\s+/g).length,
    lines = text.split("\n").length;
  return lines + " lines, " + words + " words, " + chars + " chars";
}

上記のコードは正常に動作します。これを行うことで、コードを少し最適化できます。

   words = text.split(/s+/g).length 

それ以外の

  words = text.split(/S+/g).length - 1;
于 2013-10-26T06:39:03.667 に答える
5

それはうまくいくかもしれませんが、あなたのやり方にはもっと本質的な問題があります。

まず第一に、グローバル変数を使用しています (または少なくともローカル変数ではありません)。関数は、textarea関数の外部で定義されている変数に依存しているため、柔軟性がなく、テストが困難です。代わりに、チェックする textarea 要素を受け入れてみませんか? または、要素を操作する代わりに、文字列を操作しますか? これは概念的により意味があり (統計は要素ではなく、その値です)、より柔軟なコードを作成します。

第二に、関数の名前があいまいです。getStats? の統計情報を取得しますか? これらの統計は何ですか?24歳男性の平均身長ですか?関数の名前をより意味のある名前に変更すると、関数が大幅に改善されます。

第 3 に、関数は 2 つのことを行います。テキストエリアの統計を計算し、それらを文字列にフォーマットします。しかし、その文字列の代わりに別の形式にしたい場合はどうでしょうか? それとも行数だけで、他には何もありませんか?文字列を返す代わりに、これらの統計を内部に含むデータ構造 (単純なオブジェクト) を返さないのはなぜですか? そうすれば、データを任意の方法でフォーマットできます。

第 4 に、あなたの言葉の定義は少し...奇妙です。単語を定義することは十分に困難であり、あなたの定義では、.(および他の単語も) それ自体がhello !単語であり、1 つではなく 2 つの単語で構成されていると述べています。あれは正しいですか?

于 2013-10-26T07:05:41.230 に答える
2

id関数に渡すことができtextareaます。

function getStats(textarea) {
  var text = document.getElementById(textarea).value,
    chars = text.length,
    words = text.split(/\S+/g).length - 1,
    lines = text.split("\n").length;
  return lines + " lines, " + words + " words, " + chars + " chars";
}

object個人的には、次のような文字列ではなく、文字、単語、行で返したいと思います

function getStats(textarea) {
    var text = document.getElementById(textarea).value;
    return {
        chars : text.length,
        words : text.split(/\S+/g).length - 1,
        lines : text.split("\n").length
    }
}
于 2013-10-26T06:35:16.320 に答える
1

小さな JavaScript コードを使用して上記の機能を実現できます。

このリンクをご覧ください: www.jsfiddle.net/MrbUK/

参照リンク: http://textmechanic.co/Count-Text.html

行数のカウント: Textarea.value.split(/\n/).Length

于 2013-10-26T06:37:15.953 に答える