【问题标题】:How to remove all characters from string except numbers, "," and "." using Ruby?如何从字符串中删除除数字、“、”和“。”之外的所有字符使用红宝石?
【发布时间】:2013-07-27 15:31:09
【问题描述】:

请帮助我为下一个任务提供一个正则表达式:我在某个表中有一个“成本”列,但其中的值不同:

['1.22','1,22','$1.22','1,22$','$ 1.22']

我需要删除除digits,. 之外的所有字符。所以我需要得到一个总是可以解析为浮点数的值。

【问题讨论】:

  • 你试过什么?最好在提问之前阅读一些文档或谷歌。
  • 你想解释什么'1,22'?
  • 无论你写什么作为代码都是无效的。它是一个字符串数组吗?

标签: ruby regex string parsing


【解决方案1】:
a.map {|i| i.gsub(/[^\d,\.]/, '')}
# => ["1.22", "1,22", "1.22", "1,22", "1.22"] 

【讨论】:

    【解决方案2】:

    试试这个:

    yourStr.gsub(/[^0-9,.]/, "")
    

    【讨论】:

    • 这太有帮助了!有没有办法在代码中保留换行符? (我正在尝试制作一个程序来清理 CSV 文件。)
    • @InspectorElement 将\r\n 添加到字符列表中,它们将不会被删除。
    • 谢谢,它对我有用。如果你想排除逗号只是一件事,那么只需使用 gsub(/[^0-9.]/, "")
    【解决方案3】:

    提取数字:

    a = ["1.22", "1,22", "$1.22", "1,22$", "$ 1.22"]
    a.map {|s| s[/[\d.,]+/] }
    #=> ["1.22", "1,22", "1.22", "1,22", "1.22"]
    

    假设逗号, 应被视为小数点.(如'1,22' -> 1.22),这应该将您的值转换为浮点数:

    a = ["1.22", "1,22", "$1.22", "1,22$", "$ 1.22"]
    a.map {|s| s[/[\d.,]+/].gsub(',','.').to_f }
    #=> [1.22, 1.22, 1.22, 1.22, 1.22]
    

    【讨论】:

      【解决方案4】:

      你可以用''替换所有空格,所有'$'

      【讨论】:

      • 你会如何在 ruby​​ 中做到这一点?
      【解决方案5】:

      另一个:

      a= ['1.22','1,22','$1.22','1,22$','$ 1.22']
      a.map{|i| i[/\d+.\d+/]}
      # => ["1.22", "1,22", "1.22", "1,22", "1.22"]
      

      【讨论】:

        【解决方案6】:
        str = "a1234c324ee4r"    
        str.delete("^0-9")
        

        它从字符串中删除所有字符并返回所有整数

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-13
          • 2016-03-26
          • 2011-06-23
          • 2017-04-05
          • 2020-02-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-25
          相关资源
          最近更新 更多