2017-11-20 3 views
2

Mit Ruby, wie ersetze ich einen Bereich von Zeichen in einer Zeichenfolge? Zum Beispiel teh StringWie ersetze ich eine Reihe von Zeichen in Ruby?

hellothere 

gegeben Wenn ich will Zeichen an Indexpositionen zwei bis fünf inclusive mit „#“ ersetzen, in einem String

he####here 

Wie würde ich dies tun zu führen?

+0

Müssen Sie immer mit dem gleichen Zeichen ersetzen? –

Antwort

2

Sie einen String Bereich bekommen kann, und ersetzen Sie es durch das neue Zeichen für den letzten Index multipliziert Einstellung plus 1 weniger den ersten Index:

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" 

die Methode der String Hinzufügen Klasse würden Ihnen ein Argument gibt weniger :

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

Wenn Sie die Methode der String-Klasse hinzufügen, erhalten Sie ein Argument weniger. –

+0

Soudns wie eine gute Idee ... Wie genau würde ich es der String-Klasse hinzufügen? –

+0

Fast die gleiche Art und Weise, nur das Str-Argument für einen Aufruf an self zu ersetzen. Ich habe aktualisiert. –

Verwandte Themen