2017-11-20 2 views
2

Rubyでは、文字列内の文字の範囲をどのように置き換えることができますか?私は、文字列Rubyの文字の範囲を置き換えるにはどうしたらいいですか?

he####here 

私はこれをどのようにするだろうになるために「#」を持つ2から5までを含めたインデックス位置に文字を置換したい場合たとえば、tehの文字列

hellothere 

を与えられましたか?

+0

常に同じ文字で置き換える必要がありますか? –

答えて

2

あなたは、文字列の範囲を取得し、最初のインデックス最後のインデックスのために掛けプラス1以下の新しいキャラクターを設定することで、それを置き換えることができます:

def replace_in_string(str, replace, start, finish) 
    str[start..finish] = replace * (finish + 1 - start) 
    str 
end 

p replace_in_string 'hellothere', '#', 2, 5 
# "he####here" 

は、Stringクラスにメソッドを追加するにはそれほどあなたに1つの引数を与えるだろう:

class String 
    def replace_in_string(replace, start, finish) 
    self[start..finish] = replace * (finish + 1 - start) 
    self 
    end 
end 

p 'hellothere'.replace_in_string '#', 2, 5 
# "he####here" 
+0

メソッドをStringクラスに追加すると、引数が1つ少なくなります。 –

+0

Soudnsは良いアイデアのように...私はStringクラスにどのように正確に追加しますか? –

+0

ほとんど同じように、selfへの呼び出しのstr引数を置き換えます。私は更新しました。 –

関連する問題