Estoy tratando de devolver el índice a todas las apariciones de un carácter específico en una cadena con Ruby. Una cadena de ejemplo es "a#asg#sdfg#d##"
y el retorno esperado es [1,5,10,12,13]
al buscar #
caracteres. El siguiente código hace el trabajo, pero debe haber una forma más simple de hacer esto.Índice de devolución de todas las apariciones de un carácter en una cadena en 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] == '#'} debería funcionar también ¿no? sin necesidad de, 1 ...? –
@SamJoseph En este caso, sí, los dos son sinónimos. La versión de 2 argumentos de '[x, y]' significa "una subcadena de longitud' y' que comienza en 'x'", que es lo mismo que '[x]', que significa "carácter en' x' (también un cadena porque ruby no tiene un tipo de Char) ". – erich2k8