【问题标题】:Iterating over substrings of equal size迭代相同大小的子字符串
【发布时间】:2010-10-08 12:03:36
【问题描述】:

我想将我的 String 对象转换为它的 1 个大小的子字符串(不是字符)的 Enumerable,我怎样才能在 Ruby 中有效地做到这一点?

【问题讨论】:

    标签: ruby string slice


    【解决方案1】:
    "xyzzy".split(//) => ["x", "y", "z", "z", "y"]
    

    【讨论】:

      【解决方案2】:

      在 Ruby 1.9(和 1.8.7)中,您可以使用 each_char 可靠地迭代字符串的字符,包括正确处理多字节字符和其他内容。在早期版本中,each_char 不存在,索引将返回字节代码而不是单个字符字符串。在这种情况下,您可以使用

      "abcdefg".split(//u)
      

      它将以可识别 UTF-8 的方式拆分字符串。

      有一些很好的讨论here

      【讨论】:

      • 要在 1.9 之前的 Ruby 中索引单个字符,您可以使用 "hello"[0].chr 或 "hello"[0,1]。
      • 只要不是多字节 :)
      【解决方案3】:

      也许我不明白你的问题,但是Ruby中一个字符和一个1字符的字符串没有区别。

      'hello world'.each_char {|c| puts "substring is #{c}"}
      

      【讨论】:

      • 嘿,我正要说同样的话,但我的室友分散了我的注意力。 =)
      • 是的,有区别; “xyzzy”[0] => 120
      • 在 1.9.1 中这将起作用。在早期版本中,each_char 不起作用,chars 是整数。
      • @Dave 1.8.7 也有 String#each_char。
      • @wombie: 1. 从 Ruby 1.9 开始,这不再是真的 2. 这并不意味着一个字符与一个单字符的字符串不同——只是使用了 String#[]返回一个 Fixnum。你必须执行 "xyzzy"[0].chr 来获得合适的字符——这是一个单字符的字符串!
      猜你喜欢
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2011-03-12
      • 2014-11-06
      • 2021-04-14
      • 2021-10-14
      • 1970-01-01
      相关资源
      最近更新 更多