1
<%= @contact.foo_help %>

输出一个数字 id 和 title(它们之间有一个空格),例如:29292 This Is A Title。我只想要号码。它不会总是相同数量的数字,而且我偶尔会在标题中使用数字。

我在想最简单的方法是在第一个空格之后 gsub 一切,但我是这个框架的两个弱点,无法正确使用语法!请帮忙

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

3 回答 3

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

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

Rubular 非常适合这种事情http://rubular.com/

于 2012-05-11T04:09:49.253 回答
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+/] %>

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

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

于 2012-05-11T04:07:45.993 回答
5

试试这个

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

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

希望这会帮助你。

于 2012-05-11T04:19:16.417 回答