2010-06-17 7 views
10

в Ruby, Я просто хочу, чтобы избавиться от последних п символов строки, но следующий не работаетКаков наилучший способ удалить последние n символов строки (в Ruby)?

"string"[0,-3] 

ни

"string".slice(0, -3) 

Я хотел бы чистый метод, не что-то вроде

"string".chop.chop.chop 

это может быть тривиально, пожалуйста, любой научи меня! благодаря!

+5

+1 для 'chop.chop.chop'. Заставляет меня думать о тебе, как о топоре в конце строки. :-) –

+1

'chop.chop.chop' имеет дополнительный недостаток сделать три дополнительных копии вашей' String'. Если это просто «привет, мир», то это не имеет значения, но если это «File.read» («/ some/really/big.file»), это будет. –

+0

Противоположная задача, получая последние 'n' байт/символы/что-то из вашей строки, немного сложна: http://stackoverflow.com/questions/2174767/extracting-the-last-n-characters-from-a-ruby -string –

ответ

19

Вы можете использовать диапазоны.

"string"[0..-4] 
+0

Вы избили меня! Вы также можете сделать это с помощью slice: «string» .slice (0 ..- 4) – sosborn

+3

[] и slice are synonums – Tao

+0

привет, спасибо! Я только что обнаружил, что сделал ошибку во втором параметре [] или фрагменте; это длина, а не конечная позиция ... – Tao

9

Вы можете использовать регулярное выражение с GSUB ...

"string".gsub(/.{3}$/, '') 
1

Если добавить ! в slice будет разрушительно удалить последние п символов без необходимости привязывать его к другой переменной:

my_string.slice!(my_string.length-3,my_string.length) 

по сравнению с:

new = my_string.slice(0..-4) 
Смежные вопросы