Ruby在第一个空格后删除所有内容

时间:2012-05-11 04:00:38

标签: ruby ruby-1.8.7

<%= @contact.foo_help %>

输出数字ID和标题(它们之间有空格),例如:29292这是标题。我只想要这个号码。它并不总是相同数量的数字,偶尔我会在我的标题中使用数字。

我认为最简单的方法是在第一个空格出来之后gsub所有内容,但我是这个框架中的两个弱点并且无法正确获得synstax!请帮忙

<%= @contact.foo_help.gsub( \s ' ')  %>

3 个答案:

答案 0 :(得分:6)

@contact.foo_help.gsub(/\s.+/, '')

将匹配一个空格后跟一个或多个任何字符,并替换为空字符串。

Rubular很适合这类事情http://rubular.com/

答案 1 :(得分:5)

我认为最简单/最干净的方法是使用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+/] %>

但我不知道你是否需要额外的噪音。

基本的想法是说出你的意思(“给我字符串开头的数字,我知道它将以数字开头”),而不是抓住你不想要的东西扔掉。 / p>

答案 2 :(得分:4)

试试这个

str = "29292 This Is A Title"
number = str.to_i
=> 29292
number.class
=> Fixnum

'29292 555 This Is A Title 8989'.to_i
=> 29292

希望这会对你有所帮助。