Ответ 1
Как насчет этого?
s[0, s.length - 3]
Или это
s[0..-4]
изменить
s = "abcdefghi"
puts s[0, s.length - 3] # => abcdef
puts s[0..-4] # => abcdef
Я пытаюсь создать некоторый код Ruby, который возьмет строку и вернет новую, с номером x количество символов, удаленных с ее конца - это могут быть фактические буквы, цифры, пробелы и т.д.
Ex: задана следующая строка
a_string = "a1wer4zx"
Мне нужен простой способ получить одну и ту же строку, минус - скажем - 3 последних символа. В приведенном выше случае это будет "a1wer". То, как я делаю это сейчас, кажется очень запутанным:
an_array = a_string.split(//,(a_string.length-2))
an_array.pop
new_string = an_array.join
Любые идеи?
Как насчет этого?
s[0, s.length - 3]
Или это
s[0..-4]
изменить
s = "abcdefghi"
puts s[0, s.length - 3] # => abcdef
puts s[0..-4] # => abcdef
Используйте что-то вроде этого:
s = "abcdef"
new_s = s[0..-2] # new_s = "abcde"
См. метод slice
здесь: http://ruby-doc.org/core/classes/String.html
Другой вариант - получить список chars
строки take
ing x chars и join
Возвращаясь к строке:
[13] pry(main)> 'abcdef'.chars.take(2).join
=> "ab"
[14] pry(main)> 'abcdef'.chars.take(20).join
=> "abcdef"
если вам это нужно в рельсах, вы можете использовать first (исходный код)
s = '1234567890'
x = 4
s.first(s.length - x) # => "123456"
существует также last (исходный код)
s.last(2) # => "90"
альтернативно проверьте от/до