我想定义一个接受数组和字符串的方法,然后它应该找到数组中以提供的字符串开头的所有字符串:example array["Jamaica","Japan","USA","中国”]; 如果提供的字符串是 Ja,那么它应该返回 Jamaica 和 Japan
问问题
170 次
4 回答
2
尝试使用keep_if
和正则表达式:
["Jamaica","Japan","USA","China"].keep_if { |c| c =~ /^ja/i }
# returns ["Jamaica", "Japan"]
这是一个静态示例。要动态创建正则表达式,请执行Regexp.new("^#{your_var}", true)
于 2013-02-05T22:26:23.393 回答
0
这是矫枉过正,但它会很快为巨大的阵列工作。幸运的是,我昨天偶然发现了一个名为TRIEZ的新的 ruby 高速 trie 库。gem install triez
然后从他们的示例中运行一点点:
require 'triez'
countries = ["Jamaica","Japan","USA","China"]
t = Triez.new
countries.each do |word|
t[word] = 1
end
ja_countries = []
t.search_with_prefix 'Ja' do |suffix|
ja_countries += "Ja#{suffix}"
end
它是用 C 语言实现的,所以我敢打赌它在巨大的数组上速度很快。
于 2013-02-05T22:06:00.797 回答
0
你可以使用许多不同的东西来做到这一点,如果你不想修改数组,你可以使用 Array Class 的 select 方法。
["Jamaica","Japan","USA","China"].select{|item| item.match("Ja")}
阵列将完好无损。
于 2013-02-06T01:02:31.367 回答
0
Array 最重要的方法不在 Array 的文档中,但在Enumerable的文档中。您正在寻找一种方法来查找符合某些条件的所有元素。
这个条件是字符串以某些字符开头。如果一个字符串对象有一个方法,那不是很好吗?
于 2013-02-05T23:28:05.500 回答