获取字符串中的最后一个字符
Get last character in string
我想以我的方式获取字符串中的最后一个字符 - 1) 获取最后一个索引 2) 获取最后一个索引处的字符,作为字符串。之后我会将字符串与另一个字符串进行比较,但我不会在此处包括那部分代码。我尝试了下面的代码,但得到了一个奇怪的数字。我正在使用 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, 1]
是正确的,但是更好看的解决方案是只使用 [-1]
。查看 Oleg Pischicov 的回答。
line[-1]
# => "c"
原答案
在 ruby 中,您可以使用 [-1, 1]
获取字符串的最后一个字符。这里:
line = "abc;"
# => "abc;"
line[-1, 1]
# => ";"
teststr = "some text"
# => "some text"
teststr[-1, 1]
# => "t"
解释:
字符串可以采用负索引,从末尾倒数
字符串的长度,以及您想要的字符数的长度(一个在
这个例子)。
在 OP 的示例中使用 String#slice
:( 仅适用于 ruby 1.9 之后的版本,如 Yu Hau 的回答 中所述)
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"
您可以使用 a[-1, 1]
获取最后一个字符。
您得到了意外的结果,因为 String#[]
的 return 值发生了变化。您正在使用 Ruby 1.8.7,同时引用了 Ruby 2.0
的文档
在 Ruby 1.9 之前,它 return 是一个整数字符代码。从 Ruby 1.9 开始,它 return 是角色本身。
str[fixnum] => fixnum or nil
str[index] → new_str or nil
Slice() 方法就可以了。
例如
"hello".slice(-1)
# => "o"
谢谢
在 ruby 中你可以使用这样的东西:
ending = str[-n..-1] || str
这个return最后n个字符
只需使用“-1”索引:
a = "hello there"
a[-1] #=> "e"
这是最简单的解决方案。
如果您使用的是 Rails,则将方法 #last 应用于您的字符串,如下所示:
"abc".last
# => c
您的代码可以正常工作,您看到的 'strange number' 是 ;
ASCII 代码。每个字符都有对应的ascii码(https://www.asciitable.com/)。你可以用于对话puts last_char.chr
,它应该输出;
.
使用 Rails 库,我会调用方法 #last,因为字符串是一个数组。主要是因为它更冗长..
获取最后一个字符。
"hello there".last() #=> "e"
要获取最后 3 个字符,您可以将数字传递给 #last。
"hello there".last(3) #=> "ere"
我想以我的方式获取字符串中的最后一个字符 - 1) 获取最后一个索引 2) 获取最后一个索引处的字符,作为字符串。之后我会将字符串与另一个字符串进行比较,但我不会在此处包括那部分代码。我尝试了下面的代码,但得到了一个奇怪的数字。我正在使用 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, 1]
是正确的,但是更好看的解决方案是只使用 [-1]
。查看 Oleg Pischicov 的回答。
line[-1]
# => "c"
原答案
在 ruby 中,您可以使用 [-1, 1]
获取字符串的最后一个字符。这里:
line = "abc;"
# => "abc;"
line[-1, 1]
# => ";"
teststr = "some text"
# => "some text"
teststr[-1, 1]
# => "t"
解释: 字符串可以采用负索引,从末尾倒数 字符串的长度,以及您想要的字符数的长度(一个在 这个例子)。
在 OP 的示例中使用 String#slice
:( 仅适用于 ruby 1.9 之后的版本,如 Yu Hau 的回答 中所述)
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"
您可以使用 a[-1, 1]
获取最后一个字符。
您得到了意外的结果,因为 String#[]
的 return 值发生了变化。您正在使用 Ruby 1.8.7,同时引用了 Ruby 2.0
在 Ruby 1.9 之前,它 return 是一个整数字符代码。从 Ruby 1.9 开始,它 return 是角色本身。
str[fixnum] => fixnum or nil
str[index] → new_str or nil
Slice() 方法就可以了。
例如
"hello".slice(-1)
# => "o"
谢谢
在 ruby 中你可以使用这样的东西:
ending = str[-n..-1] || str
这个return最后n个字符
只需使用“-1”索引:
a = "hello there"
a[-1] #=> "e"
这是最简单的解决方案。
如果您使用的是 Rails,则将方法 #last 应用于您的字符串,如下所示:
"abc".last
# => c
您的代码可以正常工作,您看到的 'strange number' 是 ;
ASCII 代码。每个字符都有对应的ascii码(https://www.asciitable.com/)。你可以用于对话puts last_char.chr
,它应该输出;
.
使用 Rails 库,我会调用方法 #last,因为字符串是一个数组。主要是因为它更冗长..
获取最后一个字符。
"hello there".last() #=> "e"
要获取最后 3 个字符,您可以将数字传递给 #last。
"hello there".last(3) #=> "ere"