对于给定的字符串:
string = "hello world"
我想使用索引返回一个字符串:
string2 = string[-4..2]
string2 = "orldhel"
为什么红宝石会回来:
string2 = ""
PS - 我将在索引的开头和结尾迭代1,初始字符串索引可能不一定是负数。
答案 0 :(得分:3)
单一范围内不可能。但您可以将其拆分为两个有效范围。
string = "hello world"
string[-4..-1] + string[0..2] # => "orldhel"
您可以编写一个接受单个反转范围的函数并执行此操作。我会把它留给你作为练习。
class String
alias_method :old_brackets, :[]
def [](idx)
if idx.is_a?(Range) && idx.begin < 0 && idx.end > 0
old_brackets(idx.begin..-1) + old_brackets(0..idx.end)
else
old_brackets(idx)
end
end
end
string = "hello world"
string[-4..2] # => "orldhel"