2017-08-29 7 views
2

Summernoteのエディターで数えてみようとしています。 これは、私は次のよう正規表現で空白を検出するために、JavaScriptで単語数をカウントする新しい行

if (text && text.length > 0) { 
    text = text.replace(/<(?:.|\n)*?>/gm, '').replace(/&amp;nbsp;/g, '').replace(/&nbsp;/g, '').trim(); 
    return text.length ? text.split(/\s+/).length : 0; 
} 

Uでそれを行うことを試みたサンプルテキスト

Hult International 23 

s 

e 

r 

t 

ある

を、私は言葉をカウントするサービスを作成しましたが、そのは、新しい行のために働いていません添付画像でも見ることができますhttp://i.prntscr.com/rVnabSWbR1G5rcelz915qQ.png

答えて

2
String.prototype.countWords = function(){ 
    return this.split(/\s+\b/).length; 
} 

Now you can use text.countWords()と置き換え機能を使用する必要はありません。

+0

私は例として、私の答えに[フィドル](https://jsfiddle.net/dolomike/gyosjqgk/)を加え、私は、このソリューションを適用しているが、その出力は – Shahbaz

+0

に変化が作業していないではありません。これは期待どおりに動作するように見え、比較的簡単な解決策です。私はあなたの入力例でもそれをテストしました。 –

+0

はい、あなたのソリューションはjqueryとJSでは動作していますが、angularJSでは私のために働いていません。時間と助けをありがとう – Shahbaz

1

\nを空の文字列に置き換えて、行間のすべての空白を削除し、1つの単語を23sertにします。 replaceのステップを理解しているかどうか分かりませんが、テキストに非単語シンボルがない場合は、ブロック全体の代わりに return text && text.length ? text.split(/\s+/gm).length : 0 を使用してください。タグ&を交換しながら

は、正規表現の構造を徹底的に調査した後

+0

あなたの解決策はうまくいかなかったが、それは解決のヒントをくれた。 – Shahbaz

1

(/末尾のスペースをリードするために考慮するために、いくつかの研磨を必要とするかもしれない)、私はそれがこの回答を投稿

text = text.replace(/<(?:.|\n)*?>/gm, ' ').replace(/&amp;nbsp;/g, '').replace(/&nbsp;/g, '').trim(); 

を働いた空白を置き換えるかもしれませんそれは他の

0

いくつかのいずれかが、これはそれを

theText.split(/\b[a-zA-Z]/g).length; 
0123を実行する必要があります役立ちますこと

enter image description here

関連する問題