2017-02-10 19 views
1

基本的なRubyの概念を初心者として学ぶだけです。実際にコードを探しているのではなく、むしろ次の質問の背後にあるいくつかの基本原則です(0にする必要がある場合は、コードで自由に表現することができます)。array1からの書き込みarray2からの書き込み

単純なリライトテキスト練習では、編集される言葉を入力すると、私はこれでうまくいくので、それをいくつかの方法で動作させることができます。 しかし...

ユーザーがテキストまたは編集された単語の大文字または小文字を入力する可能性を扱うには、変数.downcase!をもう一度作成する必要があります。しかし、いったんプログラムが実行されたら、単語を元の状態に戻したいのですか?

元のテキストの配列を作成する必要があります。各単語には配列内のインデックスがあり、小文字の対応する配列が作成され、単語が編集されていない場合は、小文字の配列からインデックスを作成し、元の配列から対応するインデックスを書き込んでください...これは正しいですか?それを考える上で、より簡単な方法はありますか?

私は自分の作業コードを追加しましたあなたの助け

puts " What is your message" 
text1 = gets.chomp 
text2 = text1.downcase 
puts "What is your secret word" 
redact = gets.chomp.downcase! 
words = text2.split (" ") 
words.each do |x| 
    if 
    x == redact 
    print "REDACTED" + " " 
else 
    print x + " " 
    end 
end 

のおかげで、私は、そのまま厳密には必要ではないテキスト2から元のテキスト1分けてきたことがわかりますが、維持するために、元の書式設定

答えて

3

あなたのソリューションはうまくいくと思えますし、初心者の方でも、そのような完全なソリューションを作成すると便利です。しかし、ルビーはあなたのために多くの楽しいことをすることができますことを忘れないでください。

sentenceに入力し、redactする文字列はredactに格納されているとします。

sentence.gsub(/#{redact}/i, "*" * redact.length) 

gsubは、最初の引数のすべての出現を検索し、新しい文字列を返す、第二に置き換え:

私たちは、このような単純な何かを行うことができます。 最初のargにregular expressionという改訂された文字列を使用しているという最初の通知と、iは、大文字と小文字を区別しないようにする必要があることを示しています。 2番目の引数は、編集された文字列と同じ長さのアスタリスクの文字列です。例えば

我々は次のようしている場合:

sentence = 'this is My Sentence' 
redact = 'my' 
puts sentence.gsub(/#{redact}/i, "*" * redact.length) 

上記の方法はthis is ** Sentenceを印刷します。

この正規表現は、文字列のすべての一致と一致します。たとえば、redact = 'is'の場合、結果の文章はth** ** My Sentenceになります。これが予想されるユースケースでない場合は、これを避けるために正規表現を書き直すことができます。

+0

恐ろしい感謝ジャスティンは、聞いておかげで再び –

+0

良い私は文句を言わない私はまさにそれをすべて理解していることをふり、しかし少なくとも私は今、私の次のトピック「.gsub」の名前を持って、私は必要な正確に何のthats!そうですね、コードの1行でいくつかのことが起こっているのですが、単純なケースに分解してテストしてみてください。また、gsubは正規表現なしで直接文字列を置き換えることができることに注意してください。大文字と小文字が区別されるようになるでしょう。この[site](http:// regexr。com)は、より多くのことを学びたい場合は正規表現で遊ぶのに最適です。 –

関連する問題