/ / Ruby: Wie finde ich heraus, ob ein Zeichen ein Buchstabe oder eine Ziffer ist? - Rubin, Zeichenfolge, Zeichen, Ziffern

Ruby: Wie finde ich heraus, ob ein Buchstabe ein Buchstabe oder eine Ziffer ist? - Ruby, String, Zeichen, Ziffern

Ich habe gerade angefangen, mit Ruby zu bastelnWoche und ich bin auf etwas gestoßen, von dem ich nicht ganz weiß, wie man programmiert. Ich konvertiere einen in Java geschriebenen Scanner für eine Klassenzuweisung in Ruby und bin zu folgendem Abschnitt gelangt:

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

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

lookAhead ist ein einzelnes Zeichen, das aus der Zeichenfolge ausgewählt wurdeDiese beiden Methoden bestimmen, ob es sich um ein Zeichen oder eine Ziffer handelt, und geben den entsprechenden Tokentyp zurück. Ich konnte kein Ruby - Äquivalent zu finden Character.isLetter() und Character.isDigit().

Antworten:

36 für die Antwort № 1

Verwenden Sie einen regulären Ausdruck, der mit Buchstaben und Ziffern übereinstimmt:

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

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

Diese werden als POSIX-Klammerausdrücke bezeichnet und haben den Vorteil, dass Unicode-Zeichen unter der angegebenen Kategorie übereinstimmen. Zum Beispiel:

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

Sie können mehr in lesen Ruby-Dokumente für reguläre Ausdrücke.


12 für die Antwort № 2

Am einfachsten wäre es, einen regulären Ausdruck zu verwenden:

def numeric?(lookAhead)
lookAhead =~ /[0-9]/
end

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