2012-05-11 47 views
1
<%= @contact.foo_help %> 

输出数字标识和标题(它们之间有空格),例如:29292这是标题。我只是想要这个号码。它并不总是相同数量的数字,并且我在标题中使用数字。红宝石在第一个空格后删除所有内容

我在想最简单的方法是在第一个空格之后把所有的东西都删掉,但是我是这个框架的两个弱点,无法获得synstax的权利!请帮助

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

你使用的是Rails还是Ruby? –

+0

'gsub''参数需要用逗号分隔,第一个参数必须是字符串或正则表达式。如果你想要后者,你必须使用正则表达式('/ \ s /')。我知道你对这门语言很陌生,但这是从以往的文档或文档开始的基本内容。 –

回答

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

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

Rubular是美好的这种事情http://rubular.com/

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+/] %> 

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

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

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 

希望这会帮助你。

相关问题