📅  最后修改于: 2023-12-03 15:27:29.944000             🧑  作者: Mango
在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?
方法判断是否含有关键字。如果有,就输出到控制台。
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 中一个非常实用的功能。