换行的其他编码?

时间:2014-01-23 23:58:02

标签: ruby string gsub

我在Rails应用程序中有一些数据库记录,我正在尝试导出到CSV,避免值中的换行符。我运行了一些效果:

File.open(new_file_path, 'w+') do |f|
  bio = c.biography.gsub("\n", "->")
  f.print "\"#{bio}\","
end

我看到这样的结果:

"Katcho Achadjian was first elected to the Assembly in 2010.
->
->Prior to being elected to the Legislature, Achadjian served as a member of the San Luis Obispo County Board of Supervisors from 1998 to 2010. 
->
->Achadjian graduated from Cal Poly San Luis Obispo with a bachelor’s degree in business administration. Achadjian and his wife have two adult children and reside in Arroyo Grande.",

您会注意到替换字符序列也会出现换行符。是否还有其他的换行符编码我不知何故?

2 个答案:

答案 0 :(得分:2)

这取决于平台。

在Windows上你将有\ r \ n(回车,换行)。 在Linux,OS X和其他类Unix系统上,它只是\ n(新行)。 在Classic Mac OS(最高版本9)上,它只是\ r \ n(回车)。

可能你正在使用Windows。处理跨平台文本的最佳方法是:

  1. 用\ r \ n
  2. 替换\ r \ n
  3. 用\ n
  4. 替换\ r \ n

    通过这种方式,您最终只需要\ n,无论文本来自哪个平台,您都可以获得统一行结尾的好处,因为有些编辑器不接触未经修改的行并且保存最终会出现混合行结局,甚至比这更糟糕。

答案 1 :(得分:1)

尝试将gsub修改为:

gsub(/\r?\n/, "->")