Ich versuche, den Index auf alle Vorkommen eines bestimmten Zeichens in einer Zeichenfolge mithilfe von Ruby zurückzugeben. Eine Beispielzeichenfolge ist "a#asg#sdfg#d##"
und die erwartete Rückgabe ist [1,5,10,12,13]
bei der Suche nach #
Zeichen. Der folgende Code erledigt die Aufgabe, aber es muss einen einfacheren Weg geben, dies zu tun?Rückgabe-Index aller Vorkommen eines Zeichens in einer Zeichenfolge in Ruby
def occurances (line)
index = 0
all_index = []
line.each_byte do |x|
if x == '#'[0] then
all_index << index
end
index += 1
end
all_index
end
s = "a # asg # sdfg # d ##" a = (0 ... s.length) .find_all {| i | s [i] == '#'} sollte auch richtig funktionieren? keine Notwendigkeit für die, 1 ...? –
@SamJoseph In diesem Fall, ja, die beiden sind auch. Die 2-Argument-Version von '[x, y]' bedeutet "ein Teilstring der Länge' y' beginnend bei 'x'", was dasselbe ist wie '[x]', was "Zeichen an' x' bedeutet (auch a String, weil Ruby keinen Char-Typ hat) ". – erich2k8