我想以我的方式获取字符串中的最后一个字符——1)获取最后一个索引2)获取最后一个索引中的字符,作为字符串.之后,我将把字符串与另一个字符串进行比较,但我不会在这里包含这部分代码.我try 了下面的代码,结果得到了一个奇怪的数字.我使用的是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"

但是,在我的代码中,它不是.

推荐答案

UPDATE:

line[-1]
# => "c"

Original Answer

在ruby中,可以使用[-1, 1]来获取字符串的最后一个字符.在这里:

line = "abc;"
# => "abc;"
line[-1, 1]
# => ";"

teststr = "some text"
# => "some text"
teststr[-1, 1]
# => "t"

Explanation:

在OP的例子中使用String#slice:(will work only on ruby 1.9 onwards as explained in Yu Hau's answer)

line.slice(line.length - 1)
# => ";"
teststr.slice(teststr.length - 1)
# => "t"

Let's go nuts!!!

teststr.split('').last
# => "t"
teststr.split(//)[-1]
# => "t"
teststr.chars.last
# => "t"
teststr.scan(/.$/)[0]
# => "t"
teststr[/.$/]
# => "t"
teststr[teststr.length-1]
# => "t"

Ruby相关问答推荐

带有虾Ruby 的动态标题

这是一个很好的测试?规范

ruby 中的魔术注释(#Encoding: utf-8)是如何工作的?

如何关闭 Rails 3.1 上的自动样式表/javascript 生成?

Ruby on Rails 中是否有简写 if(没有 else)语句?

如何判断 Ruby 数组是否包含多个值之一?

可可豆荚安装在iOS项目上不起​​作用

从Electron邮件中删除签名和回复

格式化 Ruby 的漂亮打印

我如何需要特定版本的 ruby​​ gem?

Ruby 中 Array#reject 的反义词是什么?

在 ruby​​ 的超类中调用另一个方法

使用哈希参数进行 DRY Ruby 初始化

有条件的数组的第一个元素

Ruby - Array#<< 和 Array#push 之间的区别

使用正则表达式进行 Ruby Electron邮件验证

obj.nil?与 obj == nil

如何使用 Ruby-Rails 删除文件夹的所有内容?

Ruby:如何计算一个字符串在另一个字符串中出现的次数?

如何在 Rails 应用程序中使用 httparty 的基本身份验证?