Rubyで文字列操作
ちょっと必要になったのでメモ。
やりたいこと
Rubyファイルと同じ場所に置いた外部テキストファイルを読み込んで、改行、任意に含まれたスペースを削除する
test.txt
読み込み対象の外部テキストファイルです。
t e s t です
getTextData.rb
#ファイルを開いて読み込む file = File.open('test.txt', 'r:utf-8') strOriginal = file.read #改行を削除し、複数の半角・全角スペースを一つにまとめる strOriginal.gsub!(/\n+/, '') strOriginal.gsub!(/(\s| )+/, ' ') #ファイルを閉じる file.close puts strOriginal
File.openだけでファイルが開いちゃうって凄いですね...。
gsubは文字列に含まれる対象の文字(第一引数)全てを第二引数に置き換えます。
また!をつけることで、strOriginalの中身自体を置き換えています。
ここで引っかかったのがバックスラッシュ()。
Windowsではフォントによって「¥」と「\」の表示が変わっていたので、Macでも特に気にしなくて良いのかな〜、と考えていたら文字列が置き換わらない...。
alt + ¥を押すことで、バックスラッシュが入力できました。
正規表現
「/」で囲ってやることで、置き換え対象の文字列を正規表現で記述できます。
「(\s| )」とすることで、半角スペース(\s)または全角スペース( )を指定し、0個以上含むかを指定する場合は「*」、1個以上の場合は「+」を後ろにつけてやります。
なお、「/(\s| )*+/」の場合はエラーは起きませんが、「/(\s| )++/」の場合はエラーとなります。