代码之家  ›  专栏  ›  技术社区  ›  Jason

如何使用Ruby删除CSV字符串的一部分?

  •  2
  • Jason  · 技术社区  · 14 年前

    "116,118,120,130"
    

    为此,我使用了:

    "116,118,120,130".gsub('118','')
    

    "116,,120,130"
    

    如果我使用

    "116,118,120,130".gsub(',116','')
    

    如何匹配字符串中在我优雅地删除的值前面可能有逗号或没有逗号的部分?

    谢谢,

    3 回复  |  直到 14 年前
        1
  •  4
  •   DigitalRoss    14 年前

    嗯,我可以试试。。。

    "116,118,120,130".split(',').reject{|e|e=="116"}.join(',')
    
        2
  •  0
  •   scottd    14 年前

    "116,118,120,130".gsub(/(,118)|(118,)/,'')
    

    我会做你想做的。用你想要的任何值替换118。但是,如果您正在寻找大于1的值,为什么不将其拆分并重新组合呢。例如

    "116,118,120,130".split(',').reject {|val| val == '118' || val == '130'}.join(',')
    

        3
  •  0
  •   glenn jackman    14 年前

    如果是稍微复杂一点的CSV数据(例如,它嵌入了逗号),请使用 csv 标准库模块

    require 'csv'
    str = 'abc,def,"ghi,jlk",mno'
    fields = CSV.parse_line(str)
    fields.reverse!  # or do whatever manipulation
    new_line = CSV.generate_line(fields) 
    # => "mno,\"ghi,jlk\",def,abc\n"