【问题标题】:How to delete white space in a string parsed (ruby) ? (delete doesn't work)如何删除解析的字符串(ruby)中的空格? (删除无效)
【发布时间】:2019-01-09 05:10:50
【问题描述】:

我不明白为什么,但我的字符串空格不想删除。 它来自从 Google 表格解析的数组。 兴趣是将其转换为整数以便随后对其进行处理。

我的代码返回“2 217 500 €”。 然后我使用方法 .delete(" "+"€") 并返回 "2 217 500"。 如果我尝试将它从一个整数(使用 .to_i)转换它返回 2。 我也试过 .gsub 和 .split 方法也不管用。

有人知道为什么它不起作用,或者其他方法吗?

这是我的代码:

spreadsheet_id = '18YgC24_HRA6cddc71vynatoMwUQpToQHtGE_p1vc2Xk'
    range = 'League_billing_total!A2:B'

    response4 = service.get_spreadsheet_values(spreadsheet_id, range).to_json
    puts response4
    # {"majorDimension":"ROWS","range":"League_billing_total!A2:B1000","values":[["Total 2018","1 575 764 €"],["Budget","2 217 500 €"]]}

    parse_response4 = JSON.parse(response4) 
    puts parse_response4
    # {"majorDimension"=>"ROWS", "range"=>"League_billing_total!A2:B1000", "values"=>[["Total 2018", "1 575 764 €"], ["Budget", "2 217 500 €"]]}

    flatte = parse_response4['values']
    puts flatte # [["Total 2018", "1 575 764 €"], ["Budget", "2 217 500 €"]]

    @starters_total = flatte.flatten!

    puts @starters_total        # ["Total 2018", "1 575 764 €", "Budget","2 217 500 €"]
    puts @starters_total[3] # "2 217 500 €"

    @budget_2018_new_deals = @starters_total[3].delete(" "+"€") 
    puts @budget_2018_new_deals # "2 217 500"
    puts @budget_2018_new_deals.to_i # 2

【问题讨论】:

  • 奇怪,如果我执行"2 217 500 €".gsub("€","").gsub(" ","").to_i 我得到了; 2217500.
  • 你对gsub做了什么尝试?
  • 还有"2 217 500 €".scan(/\d+/).join
  • Yes in irb test "2 217 500 €".gsub("€","").gsub(" ","").to_i 也适用于我,但它在实际情况下发布 2并且 .scan(/\d+/).join 有效!谢谢!

标签: ruby-on-rails ruby string integer removing-whitespace


【解决方案1】:

我会从字符串中删除所有不是数字的内容:

"2 217 500 €".gsub(/\D/, '')
#=> "2217500"

【讨论】:

  • 这个。 始终使用白名单,而不是黑名单。
【解决方案2】:

如果您只想删除前导和尾随空格(如 PHP 的修剪),您可以使用 .strip,但如果您想删除所有空格,则可以使用 .gsub(/\s+/, "")

【讨论】:

    猜你喜欢
    • 2012-12-17
    • 2011-09-30
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多