Answers:
在这里,您有一个衬板,可以放置一个大于字符串大小的数字:
"123".split(//).last(5).to_s
对于红宝石1.9+
"123".split(//).last(5).join("").to_s
对于ruby 2.0 +,join返回一个字符串
"123".split(//).last(5).join
join
作品。to_s
如果您使用join,我认为您不需要最后一个。
n.xpath('ReferenceID').inner_text.split(//).last(7).join.to_s.to_i
我需要使用to_s来执行to_i以提取数值。
"123".split(//).last(5).join
(Ruby 2.0.0)
好吧,我能想到的最简单的解决方法是:
ending = str[-n..-1] || str
(编辑:or
运算符的优先级比分配的优先级低,因此请务必使用||
。)
string.reverse[0..n].reverse
,这给了我第二个“等待,他为什么这样做?” (或者如果我不在这个问题的背景下阅读它的话)
||
代替or
或在括号中加上str[-n..-1] or str
。
在纯Ruby(没有Rails)中,您可以执行
string.chars.last(n).join
例如:
2.4.1 :009 > a = 'abcdefghij'
=> "abcdefghij"
2.4.1 :010 > a.chars.last(5).join
=> "fghij"
2.4.1 :011 > a.chars.last(100).join
=> "abcdefghij"
如果您使用的是Ruby on Rails,则可以调用方法first
和last
字符串对象。首选这些方法,因为它们简洁明了。
例如:
[1] pry(main)> a = 'abcdefg'
=> "abcdefg"
[2] pry(main)> a.first(3)
=> "abc"
[3] pry(main)> a.last(4)
=> "defg"
ending = string.reverse[0...n].reverse
"abcde".reverse[0,3].reverse
>>>“ cde” "ab".reverse[0,3].reverse
>>>“ ab” "a".reverse[0,3].reverse
>>>“ a”
要从字符串中获取最后n个字符,可以执行此操作
a [-n,n]如果a是数组。
这是示例,如果您想要一个。
ruby-1.9.2-p180:006> a =“ 911234567890”
=>“ 911234567890”
ruby-1.9.2-p180:009> a [-5,5]
=>“ 67890”
ruby-1.9.2-p180:010> a [-7,7]
=>“ 4567890”
nil
则返回该问题专门试图避免的问题。
chars
而不是split。