1

私は単語カウンター機能を持っていますが、句読点の使い方が悪い人を考慮していません。たとえば、次のようになります。

"こんにちは世界"

それは1単語としてのみカウントされます。代わりに、それを 2 単語としてカウントする必要があります。これが、この正規表現を使用している理由です。

negWords.replace(/[,.!?;\s]+/g,' ');

それは問題なく機能しますが、ダブルスペースや句読点を使用すると、それも単語としてカウントされます。

「こんにちは、」は2単語としてカウントされ、

ただし、複数の出現を 1 語以上としてカウントすることはありません。

' hello,,,,,,,,,,,,,,,,,,,,,,,,,,' は 2 単語としてカウントされます。

より多くのコンテキストのために編集されました。

4

2 に答える 2

5

テキストから単語を取得するには、次のことができます

var words = text.split(/\W+/).filter(Boolean);

カウントはwords.lengthです。

ここで、filter(Boolean)呼び出しは配列から空の文字列を削除します。

于 2013-09-02T11:07:26.803 に答える
0

+記号は、グループ内の各文字を 1 つ以上受け入れる必要があることを意味します。1 つだけが必要な場合は、+.

negWords.replace(/[,.!?;\s]/g,' ');

任意の量の空白の後に続く 1 つの句読点またはスペースをキャッチするには、次のようにします。

negWords.replace(/[,.!?;\s]\s*/g,' ');
于 2013-09-02T11:05:44.993 に答える