【问题标题】:How to convert string array into array and remove empty elements?如何将字符串数组转换为数组并删除空元素?
【发布时间】:2018-01-19 09:51:44
【问题描述】:

我有一个字符串'["", "abc", "", "def", "", "mno", "", "", "", "", ""]'。我想将其转换为数组并从该数组中删除空值。我想要的输出是abc;def;mno

有人可以帮我做这件事吗?

【问题讨论】:

  • 您可以使用 JSON.parse(a).reject(&:empty?).join(';') 简单地在一行中完成它
  • 仅作为您的示例string.scan(/\w+/) #=> ["abc", "def", "mno"],但并不是真正的通用解决方案。
  • @max,我不明白为什么这是一个骗局。这个问题涉及一个字符串;前面提到的问题涉及字符串数组。
  • 约翰,你的意思是你想要的输出是["abc", "def", "mno"]? (abc;def;mno 不是 Ruby 对象,这可能会导致被否决)。如果是这样,您应该编辑。

标签: ruby-on-rails arrays ruby string


【解决方案1】:

您可以使用JSON.parseselect 方法:

str = '["", "abc", "", "def", "", "mno", "", "", "", "", ""]'
arr = JSON.parse(str).select(&:present?)

输出数组:["abc", "def", "mno"]

如果你想得到abc;def;mno

joined = arr.join(';')

输出字符串:"abc;def;mno"

希望对你有帮助

【讨论】:

  • 纯红宝石可以使用arr = JSON.parse(str).reject(&:blank?)
【解决方案2】:

使用此代码:

str = YAML.load('["", "abc", "", "def", "", "mno", "", "", "", "", ""]')
str.select{|a| a if a != ""}.join(";")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多