2016-09-24 14 views
-2

単語の一部を変更しようとしたらどうなりますか? "カー"から "カ"へ、または "マルタ"から "マルター"への逆も同様です。それは私が欲しいものではありません 『マーサ』内のすべての「A」さんを取るだろう文字列を使用したRubyでの文章置換#gsub

<if sentance.include? "er" 
    user_input.gsub!(/er/, "a") 
end > 

:このような場合は、2番目のケースでは、私はちょうどなかった場合。

アイデア? 他の例については、 Replace words in string - ruby

+0

もし 'STR = "マーサ、ビリー・ボブだ"'、あなたはおそらく(str.gsub 'のような何かをしたい場合は/(<?? = \ bMarth)a \ b /、 "er")#=> "Marther、Billy-Bobはどこですか?" '(?<= \ bMarth)'は陽性のlookbehind *と呼ばれます。置き換えられる文字( '" a "')の前に単語区切り( '\ b')と文字列' 'Marth" 'が続くことが保証されていますが、それはマッチの一部ではありません。文章に「Martha」という文が1つしか含まれていないことが分かっていれば、「gub」ではなく「sub」を使うことができました。あなたの "cah"の言葉は私に[Crow Mystery](https://www.reddit.com/r/Jokes/comments/1l888r/the_crow_mystery/)を思い出させました。 –

+1

文法をよりよく定義する必要があります。これらの変換が行われる規則です。最後の 'a'ですか? – tadman

+0

カラスのジョークは素晴らしいです。基本的に私の目標は、基本的なスピーチからニューイングランドのアクセントにテキスト入力コンバーターを構築することです。そういうルールを使って、私は本当に単語の終わりに心配しています。具体的に言えば、AsまたはERで終わる言葉 - 母国語のスワップです。 A $はうまくいくかもしれませんが、行末には何がありますか?文字列でAsで終わる単語を検索しますか?それとも、文字列の最後の単語だけを取るか、それとも\ zですか? –

答えて

0

あなたの例とコードは、正反対の結果を示しています。

user_input.gsub!(/a$/,'er') 

と、文字列はどこマーサは、ビリー・ボブ」の場合:?あなたは「えー」とマーサの最後の「A」を交換したいと仮定すると、これは「」文字列の末尾を交換する必要がありますか「:B \

user.gsub!(/a\b/,'er') 

はワード終了または開始マッチャーです

+0

'a $'は行末であり、必ずしも文字列の終わりではない( 'a \ z')。この場合はおそらく重要ではありませんが、他の状況(データの検証など)ではセキュリティホールになる可能性があるので注意してください。 –

+0

良い点Henrik – Sid

関連する問題