我想搜索文件中的字符串(主要是.txt文件),如果匹配则返回true
。我尝试了多种解决方案,如下所示:
# 1.
File.foreach('C:\InstallList.txt').grep /Java/
# 2.
File.open("C:/InstallList.txt") do |f|
f.each_line do |line|
if line =~ '/Java/'
puts "Found Java: #{line}"
else
puts "Not found"
end
end
end
但这些似乎都不起作用。请帮忙,因为我这似乎是一件非常微不足道的事情,但仍然没有发生。
# 3.
File.each_line('c:/InstallList.txt') do |li|
puts li if (li[/Java/])
end
以下是InstallList.txt文件的片段。
swMSM 12.0.0.1
Microsoft Office Live Meeting 2007 8.0.6362.190
Microsoft .NET Framework 4.5 4.5.50709
Google Update Helper 1.3.24.15
流浪者1.6.1
Windows Azure存储工具 - v2.2.2 2.2.2.0
Microsoft Visual C ++ 2005 Redistributable 8.0.61001
AWS Command Line Interface 1.3.17
Microsoft Visual C ++ 2008 Redistributable - x86 9.0.30729.4148 9.0.30729.4148
Microsoft Silverlight 5.1.30214.0
Oracle VM VirtualBox 4.3.10 4.3.10
Java自动更新程序2.1.9.5
RapidBoot Shield 1.23
答案 0 :(得分:3)
您可以将整个文件读成字符串:
if File.read('file.txt') =~ /Java/
# ...
end
或逐行处理:
if File.foreach('file.txt').any? { |line| line =~ /Java/ }
# ...
end
如果您正在处理ASCII / UTF-8以外的文件编码,则必须在打开文件时指定它。要打开包含BOM的UTF-16文件,您可以使用:
File.read('file.txt', mode: 'r:BOM|UTF-16:UTF-8')