プロが教える店舗&オフィスのセキュリティ対策術

javascriptのソースをいろいろと見ていると、以下のような行に遭遇しました。

wordcount=content.document.getSelection().replace(/\s/g,' ').replace(/ {2,}/g,' ').replace(/ $|^ /g,'').split(' ');

この行はあまりにもまとめられて過ぎていて混乱してしまいます。
この行をもっと簡単な形で一行ずつ書くとすればどのようになるのでしょうか?
一行ずつに分割されたのなら私にも理解できると思うので、ぜひお願いします。
よろしくお願いします。

A 回答 (3件)

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/1 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/11 03:49

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です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/11 03:51

#1さんの回答を一箇所だけ訂正。



>replace(/ $|^ /g,'')
>記号を削除(グローバルマッチ)

これは記号の削除ではなく、行頭と行末にある空白の削除です。
' aaa '

'aaa'

参考URL:http://www.tohoho-web.com/js/regexp.htm
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/02/11 03:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!