使用Ruby,如何在写入输出文件的某些变量中自动转义单引号和双引号。来自PHP我正在寻找一个addlashes类型的函数,但在Ruby中它似乎不是一个简单的解决方案。
require "csv"
def generate_array( file )
File.open("#{file}" + "_output.txt", 'w') do |output|
CSV.foreach(file) do |img, _, part, focus, country, loc, lat, lon, desc, link|
output.puts("[#{lat}, #{lon}, '#{img.downcase}', '#{part}', '#{loc}', '#{focus}', '#{country}', '#{desc}', '#{link}'],")
end
end
end
ARGV.each do |file|
generate_array(file)
end
答案 0 :(得分:5)
我想你可以使用这个Ruby构造模拟PHP addslashes
功能:
.gsub(/['"\\\x0]/,'\\\\\0')
例如:
slashed_line = %q{Here's a heavily \s\l\a\s\h\e\d "string"}
puts slashed_line.gsub(/['"\\\x0]/,'\\\\\0')
# Here\'s a heavily \\s\\l\\a\\s\\h\\e\\d \"string\"
答案 1 :(得分:3)
还有String#dump:
slashed_line = %q{Here's a heavily \s\l\a\s\h\e\d "string"}
puts slashed_line.dump
#=> "Here's a heavily \\s\\l\\a\\s\\h\\e\\d \"string\""
答案 2 :(得分:1)
我不认识Ruby,但我知道PHP addslashes
已被弃用了。
每次需要转义数据时,都需要一个不同的转义例程。 HTML需要对数据库工作进行不同的编码和处理,每个数据库都有自己的特殊规则。
我假设您想要将内容输出到CSV文件。由于没有标准的CSV,这再次打开了一整条鱼。您需要对将要生成数据的内容(以及是否是严格的ASCII或Unicode或其他内容)进行一些研究,并且需要使用哪种格式的转义引号。大多数CSV消费者使用两个双引号来替换单个双引号。如果您的字符串中需要"
,请撰写""
。