<%= @contact.foo_help %>
番号IDとタイトル(間にスペースを入れて)を出力します。例:29292これはタイトルです。番号が欲しいだけです。常に同じ桁数になるとは限らず、タイトルに数字を使用することもあります。
最初のスペースを空けてからすべてをgsubするのが最も簡単な方法だと思っていましたが、このフレームワークには2つの弱点があり、構文を正しく理解できません。助けてください
<%= @contact.foo_help.gsub( \s ' ') %>
<%= @contact.foo_help %>
番号IDとタイトル(間にスペースを入れて)を出力します。例:29292これはタイトルです。番号が欲しいだけです。常に同じ桁数になるとは限らず、タイトルに数字を使用することもあります。
最初のスペースを空けてからすべてをgsubするのが最も簡単な方法だと思っていましたが、このフレームワークには2つの弱点があり、構文を正しく理解できません。助けてください
<%= @contact.foo_help.gsub( \s ' ') %>
@contact.foo_help.gsub(/\s.+/, '')
スペースの後に 1 つ以上の任意の文字が続くものと一致し、空の文字列に置き換えられます。
Rubular は、この種のことには素晴らしいhttp://rubular.com/
String#[]
最も簡単でクリーンなことは、正規表現引数で使用することだと思います:
<%= @contact.foo_help[/\d+/] %>
例えば:
>> '29292 This Is A Title.'[/\d+/]
=> "29292"
>> '29292 This 9999 Is A Title.'[/\d+/]
=> "29292"
少し締めて、正規表現を文字列の先頭に固定することもできます。
<%= @contact.foo_help[/\A\d+/] %>
しかし、余分なノイズが必要かどうかはわかりません。
基本的な考え方は、不要なものをつかんで捨てるのではなく、言いたいことを言うことです(「文字列の先頭にある数字を教えてください。数字で始まることがわかっています」)。
これを試して
str = "29292 This Is A Title"
number = str.to_i
=> 29292
number.class
=> Fixnum
'29292 555 This Is A Title 8989'.to_i
=> 29292
これがあなたを助けることを願っています。