Получить последний символ в строке
Я хочу получить последний символ в строке MY WAY - 1) Получить последний индекс 2) Получить символ в последнем индексе, как STRING. После этого я сравню строку с другой, но здесь я не буду включать эту часть кода. Я попробовал код ниже, и вместо этого я получил странное число. Я использую ruby 1.8.7.
Почему это происходит и как это сделать?
line = "abc;"
last_index = line.length-1
puts "last index = #{last_index}"
last_char = line[last_index]
puts last_char
Вывод -
last index = 3
59
Ruby docs сказал мне, что массивные нарезки работают таким образом -
a = "hello there"
a[1] #=> "e"
Но в моем коде это не так.
Ответы
Ответ 1
UPDATE:
Я постоянно получаю голоса по этому поводу, следовательно, редактирование. Использование [-1, 1]
является правильным, однако лучше выглядящее решение будет использовать только [-1]
. Отметьте ответ Олега Пищикова.
line[-1]
# => "c"
Оригинальный ответ
В рубине вы можете использовать [-1, 1]
для получения последней char строки. Здесь:
line = "abc;"
# => "abc;"
line[-1, 1]
# => ";"
teststr = "some text"
# => "some text"
teststr[-1, 1]
# => "t"
Объяснение:
Строки могут принимать отрицательный индекс, отсчитываемый от конца
строки и длину того, сколько символов вы хотите (один в
этот пример).
Используя String#slice
, как в примере OP: (будет работать только на ruby 1.9, как объяснялось в ответе Ю Хау)
line.slice(line.length - 1)
# => ";"
teststr.slice(teststr.length - 1)
# => "t"
Отпустите орехи!!!
teststr.split('').last
# => "t"
teststr.split(//)[-1]
# => "t"
teststr.chars.last
# => "t"
teststr.scan(/.$/)[0]
# => "t"
teststr[/.$/]
# => "t"
teststr[teststr.length-1]
# => "t"
Ответ 2
Просто используйте индекс "-1":
a = "hello there"
a[-1] #=> "e"
Это самое простое решение.
Ответ 3
Вы можете использовать a[-1, 1]
для получения последнего символа.
Вы получаете неожиданный результат, потому что возвращаемое значение String#[]
изменилось. Вы используете Ruby 1.8.7, ссылаясь на документ Ruby 2.0
До Ruby 1.9 возвращается целочисленный код символа. Начиная с Ruby 1.9, он возвращает сам символ.
String#[]
в Ruby 1.8.7:
str[fixnum] => fixnum or nil
String#[]
в Ruby 2.0:
str[index] → new_str or nil
Ответ 4
Если вы используете Rails, примените метод #last к своей строке, например:
"abc".last
# => c
Ответ 5
В рубине вы можете использовать что-то вроде этого:
ending = str[-n..-1] || str
это возвращает последние n символов
Ответ 6
Метод Slice() сделает для вас.
Для Ex
"hello".slice(-1)
# => "o"
Спасибо