📜  红宝石 |字符串 each_line 方法(1)

📅  最后修改于: 2023-12-03 15:27:29.944000             🧑  作者: Mango

Ruby中的字符串 each_line 方法

在Ruby中,字符串对象有一个非常方便和实用的方法,即 each_line 方法。这个方法可以将一个字符串按行分割,然后逐行进行处理。下面我们来看看这个方法的详细用法和实例。

语法

each_line 方法的语法如下:

str.each_line(separator=$/, limit=nil) {|substr| block }  -> str

其中,separator 参数表示分隔符,默认值是 $/,即系统默认的行分隔符。limit 参数表示最多分割的行数,默认值为 nil,表示不限制。block 参数表示处理每一行的代码块。

实例

我们来看一个简单的实例,演示如何使用 each_line 方法读取并输出一个文件的内容:

File.open("file.txt", "r") do |f|
  f.each_line do |line|
    puts line
  end
end

这个例子中,我们使用了 File.open 方法打开了一个名为 file.txt 的文件,并以只读模式打开。然后,在 each_line 方法中,对于文件中的每一行,我们都使用 puts 方法输出到控制台。

更多实例

下面我们再看几个更加实用的例子。

查找所有含有关键字的行
str = "I love Ruby\nRuby is the best scripting language in the world\nRuby is easy to learn\n"
keyword = "Ruby"
str.each_line do |line|
  puts line if line.include? keyword
end

这个例子中,我们首先定义了一个字符串 str,然后定义了一个关键字 keyword。在 each_line 方法中,对于每一行,我们都使用 include? 方法判断是否含有关键字。如果有,就输出到控制台。

处理包含逗号的CSV文件
data = "name,age,gender\nTom,18,Male\nLucy,20,Female\nJohn,21,Male\n"
data.each_line do |line|
  fields = line.strip.split(",")
  puts fields
end

这个例子中,我们定义了一个包含多行数据的字符串 data,每行之间用逗号分隔。在 each_line 方法中,我们首先使用 strip 方法去掉每行的首尾空格,然后使用 split 方法将一行数据分割成多个字段,存放在一个数组中,并输出到控制台。

总结

使用 each_line 方法可以方便地按行处理字符串数据,与其他语言类似,例如Python 中的 readline() 方法等。可以应用于文本文件读取、处理 CSV 文件、处理日志等场景,是 Ruby 中一个非常实用的功能。