當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。