-2

我想定义一个接受数组和字符串的方法,然后它应该找到数组中以提供的字符串开头的所有字符串:example array["Jamaica","Japan","USA","中国”]; 如果提供的字符串是 Ja,那么它应该返回 Jamaica 和 Japan

4

4 回答 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 回答