Ruby on rails 从字符串数组中删除数字

Ruby on rails 从字符串数组中删除数字,ruby-on-rails,ruby,arrays,ruby-on-rails-3,string,Ruby On Rails,Ruby,Arrays,Ruby On Rails 3,String,我有一个如下所示的数组: ["lorem", "ipsum", "1734", "dolor", "1", "301", "et", "4102", "92"] 是否有一种方法可以删除数组中的所有数字,即使它们存储为字符串,这样我就只剩下以下内容: ["lorem", "ipsum", "dolor", "et"] 谢谢您的提示。使用regexp模式 s = ["lorem", "ipsum", "1734", "dolor", "1", "301", "et", "4102", "92"]

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

["lorem", "ipsum", "1734", "dolor", "1", "301", "et", "4102", "92"]
是否有一种方法可以删除数组中的所有数字,即使它们存储为字符串,这样我就只剩下以下内容:

["lorem", "ipsum", "dolor", "et"]
谢谢您的提示。

使用regexp模式

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

我可以说的一个方法是:正则表达式匹配

  • 循环浏览所有项目
  • 然后用这个:

    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
    

  • 如果所有字符串都是整数,@Simone的答案将很好地工作

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

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

    是否有可能使用浮点字符串
    “0.12”
    ,甚至科学符号
    “3.4e-10”
    ?有些字符串可以有多行吗?如果你不介意三重否定(拒绝,不匹配,不是数字),还有
    reject{w | w!~/\D/}
    。@muistooshort在这种情况下,你可以使用select而不是reject.)但是你又被锚栓住了,你不能让每个人都质疑天才和疯狂的区别:)
    s = %w[ foo 134 0.2 3e-3 bar ]
    s.reject!{ |str| Float(str) rescue false }
    p s
    #=> ["foo", "bar"]