3

現在rubyを始めているのですが、授業の宿題で文字列を操作するように求められ、疑問が生じます。

文字列リンクが与えられた場合:

I'm the janitor, that's what I am!

タスクは、結果が次のようになるように、文字列から文字以外のすべてを削除することです

IamthejanitorthatswhatIam

これを達成する1つの方法は

"I'm the janitor, that's what I am!".gsub(" ", "").gsub(",","").gsub("'","").gsub("!","")

これは機能しますが、かなり不器用に見えます。このタスクを処理する別の方法は、おそらく正規表現です。これを達成するためのより「ルビー」な方法はありますか?

前もって感謝します

4

1 に答える 1

4

の文字列の代わりに、単語以外の文字に一致する.gsubのような正規表現を使用します。/\W/

ruby-1.9.3-p194 :001 > x = "I'm the janitor, that's what I am!"
 => "I'm the janitor, that's what I am!" 

ruby-1.9.3-p194 :002 > x.gsub(/\W/, '')
 => "ImthejanitorthatswhatIam" 

@nhahtdh が指摘したように、これには数字とアンダースコアが含まれます。

そうしなくてもこのタスクを達成できる正規表現は次の/[^a-zA-Z]/とおりです。

ruby-1.9.3-p194 :001 > x = "I'm the janitor, that's what I am!"
 => "I'm the janitor, that's what I am!" 

ruby-1.9.3-p194 :003 > x.gsub(/[^a-zA-Z]/, "")
 => "ImthejanitorthatswhatIam" 
于 2012-10-04T01:33:29.357 に答える