0

私がやりたいことは、アンダースコアで区切られたアルファベット文字のシーケンスであるすべての単語を見つけることです。たとえば、次のようになります。

L_L_L

そして、それらを次のようなタグに変えます:

<acronym>L L L</acronym>

頭字語の長さには制限がないため、すべてのインスタンスを見つけるのに苦労しています。

4

1 に答える 1

2

サンプルの頭字語が「アンダースコアで区切られた英大文字の任意のシーケンス」を表していると仮定すると、次のことができます。

def replace_acronyms(str)
  str.gsub(/\b([A-Z]+(?:_[A-Z]+)+)\b/) do |m,g1|
    '<acronym>' + $1.gsub(/_/,' ') + '</acronym>'
  end
end

replace_acronyms('Foo L_L_L bar.') # => "Foo <acronym>L L L</acronym> bar." 
于 2013-05-06T16:28:47.703 に答える