当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby CSV.generate用法及代码示例


本文简要介绍ruby语言中 CSV.generate 的用法。

用法

generate(csv_string, **options) {|csv| ... }
generate(**options) {|csv| ... }
  • 参数 csv_string 如果给定,则必须是 String 对象;默认为一个新的空字符串。

  • 参数 options 如果给出,应该生成选项。请参阅生成选项。

通过 CSV.new(csv_string, **options) 创建一个新的 CSV 对象;使用 CSV 对象调用块,该块可以修改该块;返回从 CSV 对象生成的字符串。

请注意,此方法修改了传递的字符串。如果必须保留字符串,则传递 csv_string .dup。

此方法有一个附加选项::encoding,如果没有指定 str,它会为输出设置基数 Encoding 。如果您计划输出非 ASCII 兼容数据, CSV 需要此提示。

添加行:

input_string = "foo,0\nbar,1\nbaz,2\n"
output_string = CSV.generate(input_string) do |csv|
  csv << ['bat', 3]
  csv << ['bam', 4]
end
output_string # => "foo,0\nbar,1\nbaz,2\nbat,3\nbam,4\n"
input_string # => "foo,0\nbar,1\nbaz,2\nbat,3\nbam,4\n"
output_string.equal?(input_string) # => true # Same string, modified

将行添加到新字符串中,保留旧字符串:

input_string = "foo,0\nbar,1\nbaz,2\n"
output_string = CSV.generate(input_string.dup) do |csv|
  csv << ['bat', 3]
  csv << ['bam', 4]
end
output_string # => "foo,0\nbar,1\nbaz,2\nbat,3\nbam,4\n"
input_string # => "foo,0\nbar,1\nbaz,2\n"
output_string.equal?(input_string) # => false # Different strings

从无到有创建行:

output_string = CSV.generate do |csv|
  csv << ['foo', 0]
  csv << ['bar', 1]
  csv << ['baz', 2]
end
output_string # => "foo,0\nbar,1\nbaz,2\n"

如果 csv_string 不是 String 对象,则引发异常:

# Raises TypeError (no implicit conversion of Integer into String)
CSV.generate(0)

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 CSV.generate。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。