【问题标题】:Removing characters from elements of array in Ruby从Ruby中的数组元素中删除字符
【发布时间】:2017-06-05 21:48:53
【问题描述】:

给定:

array = ["1289", "12 apples", "12546", "123"] 

如何打印出数组中的所有元素,去掉“12”?即使数组有数百个元素,我正在寻找的答案也应该适用。

【问题讨论】:

  • 迭代和gsub?
  • 以下情况的预期结果是什么:“aples12”、“ap12les”?换句话说,“12”必须在任何位置或只是在字符串的开头被带走?
  • 这只是一个开始。虽然我很想知道如何在任何位置使用 12 来做到这一点。
  • #gsub 使用全局正则表达式很容易做到这一点,@Emma-Claire。
  • @Emma-Claire 我提供了一个答案,可以从任何位置正确删除 12 以及无关的空格。如果你想要空格,只需删除 \s+ 部分。

标签: arrays ruby string iterator


【解决方案1】:

只需将mapgsub 一起使用(或sub,当12 在字符串中只出现一次时):

array = [ "1289", "12 apples", "12546", "123"]
array.map { |word| word.gsub('12', '') }
#=> ["89", " apples", "5463", "3"]

【讨论】:

  • 我想知道为什么我的帖子多次被否决,但没有人解释原因。 OP 在 cmets 中明确表示她想在任何位置使用 12 来做到这一点(不仅仅是开始),而我的回答就是这样做......
  • 我也遇到了同样的情况。不确定谁在对这个问题投反对票。无论如何,我投票决定以“不清楚你在问什么”而结束。
【解决方案2】:

您可以使用以下任何一种。

array = [ "1289", "12 apples", "1254612", "123"]

方案一(使用string#tr方法)

array.each{|string| puts string.tr("/12(\s+)?/", '')}

## Output
"89"
"apples"
"546"
"3"

方案二(使用string#gsub方法)

array.each{|string| puts string.gsub(/12(\s+)?/, '')}

## Output
"89"
"apples"
"546"
"3"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 2020-08-29
    • 2012-03-27
    • 2022-01-12
    • 2023-04-09
    相关资源
    最近更新 更多