File.open(path, 'r').each do |line|
row = line.chomp.split('\t')
puts "#{row[0]}"
end
path
是包含名称,年龄,专业,爱好等内容的文件路径
我期待输出只是名称,但我得到整条线。
为什么会这样?
答案 0 :(得分:5)
这个问题已经有了一个公认的答案,但值得注意的是原始问题的原因是什么:
这是问题部分:
split('\t')
Ruby有几种形式用于引用字符串,它们有差异,通常是有用的。
引自Ruby Programming at wikibooks.org:
...双引号旨在 解释转义字符,例如 新的线条和标签,以便它们出现 作为实际的新行和标签时 为用户呈现字符串。 但是,单引号显示 例如,实际的逃逸序列 显示\ n而不是换行。
请仔细阅读相关文章,了解%q
和%Q
字符串的使用情况。或谷歌的“红宝石字符串分隔符”,或参见this SO question。
因此'\t'
被解释为“反斜杠+ t”,而"\t"
是制表符。
String#split
也会使用Regexp
,在这种情况下可能会消除歧义:
split(/\t/)
答案 1 :(得分:0)
你的问题不是很清楚
split("\n")
- 如果你想按行分割
split
- 如果您想按空格分割
据我所知,你不需要chomp,因为它会删除所有“\ n”