• ベストアンサー

replaceが一行に何個もある?

javascriptのソースをいろいろと見ていると、以下のような行に遭遇しました。 wordcount=content.document.getSelection().replace(/\s/g,' ').replace(/ {2,}/g,' ').replace(/ $|^ /g,'').split(' '); この行はあまりにもまとめられて過ぎていて混乱してしまいます。 この行をもっと簡単な形で一行ずつ書くとすればどのようになるのでしょうか? 一行ずつに分割されたのなら私にも理解できると思うので、ぜひお願いします。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#205944
noname#205944
回答No.1

wordcount=content.document.getSelection().replace(/\s/g,' ').replace(/ {2,}/g,' ').replace(/ $|^ /g,'').split(' '); 正規表現と文字列の分割を一度にやっているのではないでしょうか content.document.getSelection() replace(/\s/g,' ') 空白文字(スペース、タブ、改行)を空白文字(スペース)に変換(グローバルマッチ) replace(/ {2,}/g,' ') 2つ以上の連続した空白文字(スペース)を1つの空白文字(スペース)に変換(グローバルマッチ) replace(/ $|^ /g,'') 記号を削除(グローバルマッチ) split(' ') 空白文字(スペース)で分割 あまり詳しくないのですが、左から順番に処理しているとして content.document.getSelection() で取得した値から タブ、改行、2つ以上連続するスペース を1つのスペースに変換、$や|などの記号を削除して 最後にスペースで区切った文字列を wordcount に配列として格納 ということではないでしょうか

参考URL:
http://www5a.biglobe.ne.jp/~n_rieko/javascript/15.htm
kililikanrai
質問者

お礼

分割のみでなく、わざわざ個別に解説してくださり、ありがとうございます。 とてもよく理解できました。 また、参考リンクもとても勉強になります。 ありがとうございました。

その他の回答 (2)

  • s_doc
  • ベストアンサー率24% (93/377)
回答No.3

W = D.getSelection().replace(P1).replace(P2).replace(P3).split(P4); ↓ W = D.getSelection(); W = W.replace(P1); W = W.replace(P2); W = W.replace(P3); W = W.split(P4); 左から順番に摘要されると単純に考えればOKです。

kililikanrai
質問者

お礼

回答ありがとうございます。

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

#1さんの回答を一箇所だけ訂正。 >replace(/ $|^ /g,'') >記号を削除(グローバルマッチ) これは記号の削除ではなく、行頭と行末にある空白の削除です。 ' aaa ' ↓ 'aaa'

参考URL:
http://www.tohoho-web.com/js/regexp.htm
kililikanrai
質問者

お礼

おお、そうだったのですか。 リンクも大変参考になります。 回答ありがとうございました。

関連するQ&A