4

使用 Ruby,我如何能够自动转义一些写入输出文件的变量中的单引号和双引号。来自 PHP 我正在寻找一个添加斜杠类型的函数,但在 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
4

3 回答 3

6

我想你可以addslashes用这个 Ruby 构造来模拟 PHP 功能:

.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\"
于 2012-09-07T17:03:44.380 回答
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\""
于 2012-09-07T19:26:26.103 回答
1

我不了解 Ruby,但我知道在 PHPaddslashes中它已被弃用。

每次您需要转义数据时,都需要不同的转义例程。HTML 需要对数据库工作进行不同的编码和处理,并且每个数据库都有自己的特殊规则。

我假设您的问题是您希望将内容输出到 CSV 文件。由于没有标准的 CSV,这再次打开了一锅鱼。您需要对生成数据的内容(以及是否是严格的 ASCII 或 Unicode 或其他内容)以及需要哪种格式的转义引号进行一些研究。大多数 CSV 使用者使用两个双引号来替换单个双引号。如果你需要"在你的字符串中,你写"".

于 2012-09-07T17:04:51.077 回答