字符串#在Ruby中拆分的行为不符合预期

字符串#在Ruby中拆分的行为不符合预期,ruby,Ruby,path是包含名称、年龄、职业、爱好等内容的文件的路径 我希望输出的名称只,但我得到了整个行 为什么会这样?你的问题不是很清楚 拆分(“\n”)-如果要按行拆分 拆分-如果要按空格拆分 我可以理解,您不需要chomp,因为它删除了所有“\n”您的问题不是很清楚 拆分(“\n”)-如果要按行拆分 拆分-如果要按空格拆分 我可以理解,您不需要chomp,因为它删除了所有“\n”问题已经有了公认的答案,但值得注意的是,最初问题的原因是: 这是问题所在: File.open(path, 'r').eac

path
是包含名称、年龄、职业、爱好等内容的文件的路径

我希望输出的名称只,但我得到了整个行


为什么会这样?

你的问题不是很清楚

拆分(“\n”)
-如果要按行拆分

拆分
-如果要按空格拆分


我可以理解,您不需要chomp,因为它删除了所有“\n”

您的问题不是很清楚

拆分(“\n”)
-如果要按行拆分

拆分
-如果要按空格拆分


我可以理解,您不需要chomp,因为它删除了所有“\n”

问题已经有了公认的答案,但值得注意的是,最初问题的原因是:

这是问题所在:

File.open(path, 'r').each do |line| 
  row = line.chomp.split('\t')
  puts "#{row[0]}"
end
Ruby有几种引用字符串的形式,它们有区别,通常是有用的

引述自:

…双引号旨在 解释转义字符,例如 新的行和选项卡,以便它们出现 当 为用户呈现字符串。 但是,单引号显示 例如,实际的转义序列 显示\n而不是新行

进一步阅读链接文章,了解
%q
%q
字符串的用法。或谷歌搜索“ruby字符串分隔符”,或参阅

因此,
“\t”
被解释为“反斜杠+t”,而
“\t”
是制表符

String#split
还将采用
Regexp
,在这种情况下,这可能会消除歧义:

split('\t')

这个问题已经有了公认的答案,但值得注意的是,最初问题的原因是什么:

这是问题所在:

File.open(path, 'r').each do |line| 
  row = line.chomp.split('\t')
  puts "#{row[0]}"
end
Ruby有几种引用字符串的形式,它们有区别,通常是有用的

引述自:

…双引号旨在 解释转义字符,例如 新的行和选项卡,以便它们出现 当 为用户呈现字符串。 但是,单引号显示 例如,实际的转义序列 显示\n而不是新行

进一步阅读链接文章,了解
%q
%q
字符串的用法。或谷歌搜索“ruby字符串分隔符”,或参阅

因此,
“\t”
被解释为“反斜杠+t”,而
“\t”
是制表符

String#split
还将采用
Regexp
,在这种情况下,这可能会消除歧义:

split('\t')

编辑您的问题以包含示例输入和输出-这将有助于人们回答您的问题。编辑您的问题以包含示例输入和输出-这将有助于人们回答您的问题。对不起,先生,如何接受nd我实际解决了我的问题,我正在使用拆分('\t'),如果(“\t”)我使用的单引号是错误的。若要接受答案,可以单击问题右侧的复选标记。要更新答案,您可以单击指向上方的三角形,该三角形也位于答案的右侧。很幸运,先生,但是如何接受nd我实际上解决了我的问题我使用了拆分('\t'),如果我使用的(“\t”)单引号接受答案是错误的,您可以单击问题右侧的复选标记。要更新答案,您可以单击指向上方的三角形,该三角形也位于答案的右侧。幸运的是,你的答案更准确。因为那个家伙说的是行,他的问题不是很清楚,我想他是在寻找一种将文本逐行分割的方法。是的,你的答案更精确。因为那个家伙在谈论行,他的问题不是很清楚,我想他是在寻找一种按行分割文本的方法。