[JS] 最後のwordを得る関数
もうひとつ、紹介し忘れていた関数がありました。 文字列を単語(word)単位で分割し、その最後のwordを返す関数です。
jp.rinco.lastWord = function(str) {
if (str == "") return "";
var s=str.replace(/(\s|\u3000)+/g,' ').split(' ');
return s[s.length - 1];
}
replace() に指定している "/(\s|\u3000)+/g" という正規表現(RegExp)が少し複雑かもしれません。 split()の事前処理として、タブや改行や全角スペースも半角スペースに変換しています。
正規表現について簡単に説明します。 もっとも単純な変換だと str.replace(/\s/, ' '); という感じになるでしょうか。
ただ"\s" だけでは全角スペースに対応できない様子なので、全角スペースのUnicode表記 "\u3000" と組み合わせて "\s|\u3000" という表記にします。
複数連続したスペースが含まれる場合があります。 そこでそれらをまとめ、1つの対象として処理するために、1回以上の繰り返し "+" を使用して "(\s|\u3000)+" という表記にします。
最後に追加される "/g" はよく使いますね。 一致する対象を全て処理するオプション、グローバルマッチングです。
文字列操作において、正規表現は非常に便利ですので、ぜひ活用してみてください。
2007/2/27 追記: jp.rincoオブジェクト へ移動
0 Comments:
コメントを投稿
<< Home