ちょっとしたフリーワード検索を実装しようと、入力された文字列を空白で分解する場面が。
単純に次のようにすると、全角スペースがうまくいかない。
"aaa bbb ccc".split(' ')
#=> ['aaa', 'bbb', 'ccc']
"あああ いいい ううう".split(' ')
#=> ['あああ いいい ううう']
事前に文字列置換をかけたり、正規表現に全角スペースを追加したりするのも良いけど、今回は多言語仕様のアプリなんで、日本語の全角スペースをコード中に含めるのは違和感。そこでposixの空白演算子を試してみたら、うまくいった。
"あああ いいい ううう".split(/[[:blank:]]/)
#=> ['あああ', 'いいい', 'ううう']
# tabでもOK
"aaa bbb¥tccc".split(/[[:blank:]]/)
#=> ['aaa', 'bbb', 'ccc']
連続した空白も除去してしまいたければ、もうひと工夫。
"あああ いいい ううう".split(/[[:blank:]]/)
#=> ['あああ', '', 'いいい', 'ううう']
"あああ いいい ううう".split(/[[:blank:]]+/)
#=> ['あああ', 'いいい', 'ううう']