从.split string ruby中删除特殊字符
我使用ruby读取文件,并使用.split来拆分行 Example.txt 一, 二, 三, 我怎样才能得到我所期望的 编辑:这只是一个新行,因为我不能在我的问题中输入一个新行。更具体地说: Example.txt 第一行\n第二行\n第三行从.split string ruby中删除特殊字符,ruby,regex,string,Ruby,Regex,String,我使用ruby读取文件,并使用.split来拆分行 Example.txt 一, 二, 三, 我怎样才能得到我所期望的 编辑:这只是一个新行,因为我不能在我的问题中输入一个新行。更具体地说: Example.txt 第一行\n第二行\n第三行 File.open('Example.txt', 'r') do |f1| @line = f1.readlines f1.close end line1,line2,line3=
File.open('Example.txt', 'r') do |f1|
@line = f1.readlines
f1.close
end
line1,line2,line3= @line.to_s.split("\n",3)
#actual
line1 => ["first_line
line2 => ", "second_line
line3 => ", "third_line"]
#what I expect
line1=first_line
line2=second_line
line3=third_line
如果您试图使用行尾,则无法使用
'\n'
进行拆分。您必须使用“\n”
使用'\n'
的字符串不会将\n
解释为行尾,而是将其视为后跟“n”的反斜杠:
这个问题一点也不清楚,输入文件示例也不清楚,因为给出了一个小示例代码,但是,猜测您希望从期望的结果中得到什么 如果输入是一个名为“example.txt”的文件,如下所示: 1 2 3 或: 然而,当像这样将文件读入内存时,这两种方法都有一个非常糟糕的优先级设置。它被称为“slurping”,如果文件大于可用内存,它可能会使代码崩溃或使代码及其运行的机器爬行。而且,即使它适合内存,在内存分配和重新分配时,将一个巨大的文件加载到内存中也会导致暂停。所以,不要这样做 相反,请逐行读取文件,并尽可能以这种方式进行处理:
File.foreach('example.txt') do |line|
puts line
end
# >> 1
# >> 2
# >> 3
不要这样做:
File.open('Example.txt', 'r') do |f1|
@line = f1.readlines
f1.close
end
Ruby将自动关闭这样打开的文件:
File.open('Example.txt', 'r') do |f1|
...
end
无需在块内使用
close
。取决于您的确切期望(以及@line
是什么)。如果您要查找数字,可以使用:
line1, line2, line3 = @line.to_s.scan(/\d/)
如果你想要其他字符,你可以使用其他的正则表达式。它仍然有问题line1=>[“1 line2=>”,“2 line3=>”,“3”]#我希望line1=1 line2=2 line3=3太好了,非常感谢你的帮助和支持。这只是一个示例文件,我的文件比这个更复杂。那么你想做什么呢?你能提供一些详细信息吗?我用多行阅读了整个文件,然后我用.split来获得每一行,但它在这个->[“,”中有特殊字符,我不知道如何删除它。用regexs来删除它们。如果这些是你想删除的唯一字符,你可以尝试用
@line.to_.scan(/[^\[\],\n]/)
。您的输入应该是什么?文本文件中的三行由一行新行分隔?您显示的是三行由两行新行分隔。您如何读取该文件?[
和]
来源?这些都不在您的输入文件中,也不在您的代码中。实际上,您的问题缺少很多必要的信息,需要更好的澄清。当我放置@line时,它没有[],我猜它来自“.split”,我不知道如何删除它,尽管我只需要使用.gsubFile.readlines的Example.txt,readlines会将文件读入一行数组中
File.foreach('example.txt') do |line|
puts line
end
# >> 1
# >> 2
# >> 3
File.open('Example.txt', 'r') do |f1|
@line = f1.readlines
f1.close
end
File.open('Example.txt', 'r') do |f1|
...
end
line1, line2, line3 = @line.to_s.scan(/\d/)