Próbuję zwrócić indeks do wszystkich wystąpień określonego znaku w ciągu za pomocą Ruby. Przykładowy ciąg znaków to "a#asg#sdfg#d##"
, a oczekiwany zwrot to [1,5,10,12,13]
podczas wyszukiwania znaków #
. Poniższy kod wykonuje zadanie, ale musi być prostszy sposób robienia tego?Indeks powrotu wszystkich wystąpień znaku w ciągu w rubi
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] == "# '} powinno działać zbyt dobrze? nie ma potrzeby, 1 ...? –
@SamJoseph W tym przypadku tak, dwa są synonimami. Wersja 2 argumentów '[x, y]' oznacza "podłańcuch długości' y' rozpoczynający się od 'x'", który jest taki sam jak '[x]', co oznacza "znak w' x' (również ciąg, ponieważ ruby nie ma typu Char) ". – erich2k8