Sto tentando di restituire l'indice a tutte le occorrenze di un carattere specifico in una stringa utilizzando Ruby. Una stringa di esempio è "a#asg#sdfg#d##"
e il rendimento previsto è [1,5,10,12,13]
durante la ricerca di caratteri #
. Il seguente codice fa il lavoro ma ci deve essere un modo più semplice per farlo?Indice di ritorno di tutte le occorrenze di un carattere in una stringa in rubino
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] == '#'} dovrebbe funzionare anche a destra? non c'è bisogno del, 1 ...? –
@SamJoseph In questo caso, sì, i due sono sinonimi. La versione a 2 argomenti di '[x, y]' significa "una sottostringa di lunghezza' y' che inizia a 'x'", che è la stessa di '[x]', che significa "carattere a' x' (anche a stringa perché ruby non ha un tipo Char) ". – erich2k8