2011-05-31 14 views

回答

190

如果在your_text可变文本,你可以使用:

your_text[0..29] 
+13

或'your_text [0 ... 30]' – Sorrow 2011-05-31 08:15:58

162

使用String#slice,也别名为[]

a = "hello there" 
a[1]     #=> "e" 
a[1,3]     #=> "ell" 
a[1..3]    #=> "ell" 
a[6..-1]    #=> "there" 
a[-3,2]    #=> "er" 
a[-4..-2]    #=> "her" 
a[12..-1]    #=> nil 
a[-2..-4]    #=> "" 
a[/[aeiou](.)\1/]  #=> "ell" 
a[/[aeiou](.)\1/, 0] #=> "ell" 
a[/[aeiou](.)\1/, 1] #=> "l" 
a[/[aeiou](.)\1/, 2] #=> nil 
a["lo"]    #=> "lo" 
a["bye"]    #=> nil 
+0

大感谢的人:)! – 2011-05-31 08:17:12

+0

超棒的答案! +1 – Automatico 2013-06-13 17:42:39

+24

明确地说,'-1'用于到达字符串的末尾,所以**'a [1 ..- 1]#=>“ello there”**。 – 2014-04-18 19:24:11

23

既然你标记它的Rails,您可以用截断:

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-truncate

例子:

truncate(@text, :length => 17) 

摘录是好的,太知道了,它可以让你显示的摘录文字像这样:

excerpt('This is an example', 'an', :radius => 5) 
# => ...s is an exam... 

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-excerpt

+6

Ruby不是Rails。 – 2014-11-12 03:07:10

+0

@JoóÁdám标签由Andrew Marshall更改 – apneadiving 2014-11-14 12:03:01

+0

有没有任何改变的理由?如果OP在Rails中工作并要求在Rails中提供解决方案,那么问题应该使用Rails进行标记。然后你的回答会有道理。 – 2014-11-16 17:00:21

0

如果你想要一个字符串,那么其他的答案是好的,但如果你正在寻找的是前几个字母字符,你可以访问它们作为一个列表:

your_text.chars.take(30) 
相关问题