对于给定的字符串:
string = "hello world"
我想使用索引返回一个字符串:
string2 = string[-4..2]
string2 = "orldhel"
为什么 ruby 返回:
string2 = ""
PS - 我将把索引的开头和结尾迭代 1,并且初始字符串索引可能不一定是负数。
最佳答案
不可能在单一范围内。但您可以将其分成两个有效范围。
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"
关于ruby - 如何使用负索引到正索引进行字符串索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16925034/