文字列のキーワードを選択してRubyでフォーマットを変更します 大きな文字列(テキスト)と以下のような文字列(key_words):Rubyでフォーマットを変更する文字列(配列に含まれる)のキーワードを選択する
text = 'So in this election, we cannot sit back and hope that everything works out for the best. We cannot afford to be tired or frustrated or cynical. No, hear me. Between now and November, we need to do what we did eight years ago and four years ago…'
key_words = ['frustrated', 'tired', 'hope']
私の目的は、key_wordsに含まれる単語の色とケースを変えながら「テキスト」の各単語を印刷することです。
require 'colorize'
text.split(/\b/).each do |x|
if key_words.include?(x.downcase) ; print '#{x}'.colorize(:red)
else print '#{x}' end
end
しかし、私は私が完全に一致越え選択をより敏感にしたいkey_wordsに多くの単語を含めるようにしたくないので、私は実行していることを行うことができました。このような場合と同様に、例えば:
key_words = ['frustrat', 'tire', 'hope'] => the algorithm would select both 'Frustration', 'Frustrated' or 'Tiring' and 'Tired' or 'Hope' and 'Hopeful'.
私は以下のように文字列と配列の両方でワード長で遊んでみましたが、それはだ非常に非効率的な解決策と私はの使用に非常に混乱しそうだと思われます。どれか?および。このシナリオのメソッド。
key_words = ['frustrated', 'tired', 'hope']
key_words_abb = []
key_words.each { |x| key_words_abb << x.downcase[0][0..x.length-2]}
text.split(/\b/).each do |x|
if key_words_abb.include?(x.downcase[0][0..x.length-2]); print '#{x}'.colorize(:red)
else print x
end
end
私は特定の解決策をオンラインで見つけることができないので、私はあなたの助けに感謝します。
ようこそスタックオーバーフロー!あなたが書式設定してスクロールしないように手伝ってください。 – zhon
Rubyには 'colorize'メソッドがありません。それをカバーするタグが必要です。 –
ここにあなたの見積もりを見る。エディタの中に「スマート引用符」を使用すると、重大な問題が発生する可能性があります。それらを無効にするか、コーディングのためのエディタを使用してください。 – tadman