从字符串数组中删除数字

时间:2012-10-18 17:06:48

标签: ruby-on-rails ruby arrays ruby-on-rails-3 string

我有一个如下所示的数组:

["lorem", "ipsum", "1734", "dolor", "1", "301", "et", "4102", "92"]

有没有办法删除数组中的所有数字,即使它们存储为字符串,所以我会留下这个:

["lorem", "ipsum", "dolor", "et"]

感谢任何提示。

4 个答案:

答案 0 :(得分:5)

使用正则表达式

s = ["lorem", "ipsum", "1734", "dolor", "1", "301", "et", "4102", "92"]
s.reject { |l| l =~ /\A\d+\z/ }
# => ["lorem", "ipsum", "dolor", "et"] 

答案 1 :(得分:4)

s = ["lorem", "ipsum", "1734", "dolor", "1", "301", "et", "4102", "92"]
s.reject{|s| s.match(/^\d+$/) }

答案 2 :(得分:2)

如果你的所有字符串都只是整数,@ Simone的答案就会很好用。

如果您需要检查所有数字表示(浮点数和科学计数法),那么您可以:

s = %w[ foo 134 0.2 3e-3 bar ]
s.reject!{ |str| Float(str) rescue false }
p s
#=> ["foo", "bar"]

答案 3 :(得分:0)

我可以说的一种方式是:REGEX匹配

  1. 循环浏览所有项目
  2. 然后使用:

    txt='Your string'
    
    re1='(\\d+)'    # Integer Number 1
    
    re=(re1)
    m=Regexp.new(re,Regexp::IGNORECASE);
    if m.match(txt)
        int1=m.match(txt)[1];
        # REMOVE THE ITEM HERE
    end
    
相关问题