如何获取文本的子字符串?


172

我的文字长度约为700。如何只获得约30个首字符?

Answers:



207

使用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

31
要清楚,-1用于到达字符串的末尾,所以a[1..-1] #=> "ello there"
约书亚·品特

5
这可能是明显一些,但它是不是好使用逗号负的位置:a[-4,-2]。唯一有效的表示法是两个点:a[-4..-2]。很难学到它。
cavpollo

24

由于标记了Rails,因此可以使用truncate:

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


9
Ruby不是Rails。
JOO ADAM

@JoóÁdám标签由Andrew Marshall更改
暂停

有什么理由改变吗?如果OP在Rails中工作并要求在Rails中解决,则该问题应该用Rails标记。然后,您的答案就会有意义。
JOO亚当

@JoóÁdám这个问题被OP标记为Rails,这就是重点
2014年

我明白了,我看不到为什么删除了标签。我已经编辑了问题,并明确说明了有关Rails的问题。有待审核。
JOO亚当


0

如果您想要一个字符串,那么其他答案也很好,但是如果您要查找的是前几个字母作为字符,则可以将其作为列表访问:

your_text.chars.take(30)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.