ruby - 如何使用负索引到正索引进行字符串索引?

标签 ruby string

对于给定的字符串:

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/

相关文章:

ruby-on-rails - rails 和重构,针对 vim 用户的建议工具和技术?

ruby - 整数变量和数组变量之间的奇怪区别

ruby "class << self"可能会导致 gem 错误?

reactjs - 为什么我不能在 React 中对类名使用字符串插值?

c++ - 将不包含定界符的字符串末尾添加到 vector

ruby - 何时将字符串用法重构为 Ruby 中的符号

ruby - 快速FTP服务器

c++ - 如何连接字符串和 const char?

programming-languages - 如何实现 C++0x 原始字符串文字?

java - 查找字符在字符串中的位置