array ruby string character digits

array - ruby substring



Ruby: ¿Cómo saber si un personaje es una letra o un dígito? (2)

Acabo de empezar a jugar con Ruby a principios de esta semana y me he encontrado con algo que no sé cómo codificar. Estoy convirtiendo un escáner que fue escrito en Java en Ruby para una tarea de clase, y he llegado a esta sección:

if (Character.isLetter(lookAhead)) { return id(); } if (Character.isDigit(lookAhead)) { return number(); }

lookAhead es un solo carácter seleccionado de la cadena (que se mueve un espacio cada vez que se desplaza) y estos dos métodos determinan si es un carácter o un dígito, y devuelve el tipo de token apropiado. No he podido averiguar un equivalente de Ruby con Character.isLetter() y Character.isDigit() .


La forma más sencilla sería usar una expresión regular:

def numeric?(lookAhead) lookAhead =~ /[0-9]/ end def letter?(lookAhead) lookAhead =~ /[A-Za-z]/ end


Use una expresión regular que coincida con letras y dígitos:

def letter?(lookAhead) lookAhead =~ /[[:alpha:]]/ end def numeric?(lookAhead) lookAhead =~ /[[:digit:]]/ end

Estas se denominan expresiones de corchetes POSIX, y la ventaja de ellas es que los caracteres Unicode en la categoría dada coincidirán. Por ejemplo:

''ñ'' =~ /[A-Za-z]/ #=> nil ''ñ'' =~ //w/ #=> nil ''ñ'' =~ /[[:alpha:]]/ #=> 0

Puedes leer más en los documentos de Ruby para expresiones regulares .