strings scan metodos method funcion example contar caracteres ruby

scan - Extraer el número de la cadena en Ruby



scan ruby example (6)

Estoy usando este código:

s = line.match( /ABCD(/d{4})/ ).values_at( 1 )[0]

Para extraer números de cadenas como:

ABCD1234 ABCD1235 ABCD1236

etc.

Funciona, pero me pregunto qué otra alternativa tengo para esto en Ruby.

Mi código:

ids = [] someBigString.lines.each {|line| ids << line.match( /ABCD(/d{4})/ ).values_at( 1 )[0] }


Hay muchas formas de Ruby según http://www.ruby-forum.com/topic/125709

  1. line.scan(//d/).join('''')
  2. line.gsub(/[^0-9]/, '''')
  3. line.gsub(/[^/d]/, '''')
  4. line.tr("^0-9", '''')
  5. line.delete("^0-9")
  6. line.split(/[^/d]/).join
  7. line.gsub(//D/, '''')

Pruebe cada uno en su consola.

También puedes ver el informe de referencia en esa publicación.


Otra solución puede ser escribir:

myString = "sami103" myString.each_char{ |c| myString.delete!(c) if c.ord<48 or c.ord>57 } #In this case, we are deleting all characters that do not represent numbers.

Ahora, si escribes

myNumber = myString.to_i #or myString.to_f

Esto debería devolver un


Para extraer parte de un número de una cadena usa lo siguiente:

str = ''abcd1234'' //d+/.match(str).try(:[], 0)

Debe devolver 1234


hay incluso una solución más simple

line.scan(//d+/).first


a.map {|x| x[//d+/]}


your_input = "abc1cd2" your_input.split(//).map {|x| x[//d+/]}.compact.join("").to_i

Esto debería funcionar.