Как получить подстроку текста?

172

У меня есть текст длиной ~ 700. Как я могу получить только ~ 30 своих первых персонажей?

Сэм Витекер
источник

Ответы:

243

Если у вас есть текст в your_textпеременной, вы можете использовать:

your_text[0..29]
Маттео Алессани
источник
18
илиyour_text[0...30]
Печаль
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]. Узнал это трудным путем.
Кавполло
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

apneadiving
источник
9
Руби это не рельсы.
Joó Ádám
Тег @ JoóÁdám был изменен Эндрю Маршаллом
апонадив
Было ли какое-либо оправдание для изменения? Если OP работает в Rails и запрашивает решение в Rails, тогда вопрос должен быть помечен как Rails. И тогда ваш ответ будет иметь смысл.
Joó Ádám
@ JoóÁdám вопрос был помечен Rails OP, вот в чем суть
апонадив
Я понимаю, я не понимаю, почему был удален тег. Я отредактировал вопрос и дал понять, что речь идет о Rails. Это ожидает рассмотрения.
Joó Ádám
12

если вам это нужно в rails, вы можете использовать сначала ( исходный код )

'1234567890'.first(5) # => "12345"

есть и последний ( исходный код )

'1234567890'.last(2) # => "90"

альтернативно проверьте от / до ( исходный код ):

"hello".from(1).to(-2) # => "ell"
Арай Каржаув
источник
NoMethodError: undefined method `first' for "abcde":StringРеализация рельсов?
Ее
Да, это так. но вы также можете скопировать ссылки на исходные коды, которые я разместил
Aray Karjauv
0

Если вам нужна строка, то другие ответы хороши, но если вы ищете первые несколько букв в виде символов, вы можете получить к ним доступ в виде списка:

your_text.chars.take(30)
user12341234
источник