2017-06-27 18 views
2

たとえば、文字列は「今日はとても幸せです。私は、文字 "a"を含むすべての単語を削除したい。だから出力は "私は非常に"あるはずです。どうやってやるの?Ruby-文字列内の特定のパターンを持つすべての単語を削除する方法

+1

保存する単語間に余分なスペースを入れたいかどうかを言う必要があります。たとえば、 'str =" I_am_very ____ grouchy_today "'とします。ここでスペースはアンダースコアで表されます(SOはコメントに余分なスペースを取り除きます)。あなたは "I_very_grouchy"または "I_very____grouchy"を返そうとしますか –

+0

あなたは私の質問を見ましたが、回答しないことを選択しました。どうして? –

答えて

5

、唯一の小さな:)ほとんど知られていないを使用しますEnumerable#grep_v

#grepの反転バージョン。 enumの中でPattern ===要素でないすべての要素の配列を返します。ここで

"I am very happy today".split.grep_v(/a/).join(' ') # => "I very" 
+0

@mudasobwaが出現し、否定的な先読みなどの巧妙な正規表現の解決策が投稿されることが予想されます。 :) –

+0

Uはとても素敵です!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!私をたくさん助けて!!!!!!!!!! – Tim

2

あなたは各単語を分割し、手紙を持っているものを削除してみてください「」とこのように一緒に言葉を結合することができます。サムの答え@と同様に

"I am very happy today".split.reject{ |word| word.include?("a") }.join(" ") 
+0

あなたのソリューションをありがとう^ _^ – Tim

1

は、正規表現と例です:

  • 単語境界
  • 英数字
  • 英数字
  • ワード境界

不要なスペースを削除する必要があります。

"I am very happy today".gsub(/\b\w*a\w*\b/i, '').strip.gsub(/\s+/, ' ') 

splitjoinとの答えは、しかし、きれいです。

+0

お返事ありがとうございました^ _ ^ – Tim

関連する問題