2

Ruby の文字列からいくつかのフレーズを削除する必要があります。句は配列内で定義されます。次のようになります。

remove = ["Test", "Another One", "Something Else"]

次に、特定の文字列からこれらをチェックして削除したいと思います。

「これはテストです」 => 「これは」 「これは別の 1 つです」 => 「これは」 「これは別の 2 つです」 => 「これは別の 2 つです」

Ruby 1.9.3 と Rail 3.2.6 を使用。

4

2 に答える 2

5
ary = ["Test", "Another One", "Something Else", "(RegExp i\s escaped)"]
string.gsub(Regexp.union(ary), '')

Regexp.union文字列(または正規表現)の配列を単一の正規表現にコンパイルするために使用できるため、単一の検索と置換のみが必要です。

Regexp.union ['string', /regexp?/i] #=> /string|(?i-mx:regexp?)/
于 2012-07-20T00:52:28.907 に答える
1

最も単純な (ただし、最も効率的ではありません):

# Non-mutating
cleaned = str
remove.each{ |s| cleaned = cleaned.gsub(s,'') }

# Mutating
remove.each{ |s| str.gsub!(s,'') }

より効率的 (ただし明確ではありません):

# Non-mutating
cleaned = str.gsub(Regexp.union(remove), '')

# Mutating
str.gsub!(Regexp.union(remove), '')
于 2012-07-20T04:19:41.197 に答える