我是ruby新手,目前正在try 从ruby中的基本字符串分别对每个字符进行操作.我使用的是ruby 1.8.6,我想做如下事情:

"ABCDEFG".each_char do |i|
  puts i
end

这会产生一个未定义的方法"each_char"错误.

我希望看到垂直输出:

A
B
C
D
..etc

each_char方法是否仅为1.9定义?我try 使用plain each方法,但块只是在一行中输出整个字符串.我唯一能想到的方法是从一开始就创建一个字符数组,这相当不方便:

['A','B','C','D','...'].each do|i|
  puts i
end

这将输出所需的:

A
B
C
..etc

有没有一种方法可以从一个未修改的字符串开始获得这个输出?

我认为Java的类似功能是:

for (int i = 0; i < aString.length(); i++){
  char currentChar = aString.charAt(i);
  System.out.println(currentChar);
}

推荐答案

我也有同样的问题.我通常求助于String#split:

"ABCDEFG".split("").each do |i|
  puts i
end

我想你也可以像这样自己实现它:

class String
  def each_char
    self.split("").each { |i| yield i }
  end
end

Edit:另一种 Select 是String#each_byte,Ruby 1.8.6中提供了String#each_byte,它以ASCII字符串的形式返回每个字符的ASCII值:

"ABCDEFG".each_byte do |i|
  puts i.chr # Fixnum#chr converts any number to the ASCII char it represents
end

Ruby相关问答推荐

Ruby脚本递归地创建深度嵌套的目录

关键字if是什么对象类型/类?

为什么在if语句中的赋值操作不会在条件判断之前发生?

当我在 Ruby 中围绕最后一个字符拆分时,如何拆分字符串?

Ruby符号前面的-是什么意思?

ruby `encode': "\xC3" 从 ASCII-8BIT 到 UTF-8 (Encoding::UndefinedConversionError)

如何调试/显示使用 RestClient 发送的请求

Ruby:将unix时间戳转换为日期

判断 Ruby Gem 的可用性

从 Ruby 程序中创建 beep声的最简单方法是什么?

Ruby代码美化,多行拆分长指令

如何在 ruby​​ 中解压缩 Gzip 字符串?

使用 Ruby 将大写字符串转换为标题大小写

Ruby Koans 的 test_sharing_hashes 中的附加问题的答案是什么?

ruby 中&:运算符的功能是什么?

Xcode - 配置:错误:在 $PATH 中找不到可接受的 C 编译器

为什么在安装 gem 时出现权限被拒绝错误?

Ruby 疯狂:类与对象?

类变量上的 attr_accessor

=== 与 == 在 Ruby 中