2012-05-17 18 views
11

Wie Python? Ich versuche zu überprüfen, ob jedes Zeichen in einer Zeichenfolge alphanumerisch ist oder nicht?Hat Ruby keine Isalpha?

+0

Ich habe versucht zu googeln, aber habe nichts gefunden. Also wollte ich das nur mit SO bestätigen. – sivabudh

+1

Sie können Regexes dafür verwenden. –

+0

Okay, danke Sergio. – sivabudh

Antwort

19

Es gibt einen speziellen Zeichenklasse für diese:

char.match(/^[[:alpha:]]$/) 

, dass ein einzelnes alphabetisches Zeichen übereinstimmen sollte. Es scheint auch für UTF-8 zu funktionieren.

eine ganze Reihe zu testen:

string.match(/^[[:alpha:]]+$/) 

Denken Sie daran, diese für Leerzeichen oder Satzzeichen berücksichtigt nicht.

+0

Danke. Ich denke, in Ruby müssen Sie RegEx verwenden. – sivabudh

+0

Sie könnten immer eine 'String # isalpha?' Methode hinzufügen, wenn Sie diesen Stil bevorzugen, wie Sergio es vorschlägt. – tadman

+1

Ich weiß nicht, wie das die richtige Antwort ist. [[: alpha:]] ist für Alphabete, während das OP um eine Überprüfung auf alphanumerische Zeichen gebeten hat. –

17

Sie können Ihre eigenen rollen :) Ersetzen Sie alnum mit alpha, wenn Sie nur Buchstaben ohne Zahlen übereinstimmen möchten.

class String 
    def alpha? 
    !!match(/^[[:alnum:]]+$/) 
    end 
end 

'asdf234'.alpha? # => true 
'[email protected]#$'.alpha? # => false 
+2

Oder um rubinroter zu sein: '#alpha?'. – d11wtq

+0

@ d11wtq: absolut. Danke :) –

+1

'! Self.match (/ [^ [: alnum:]] /)' ist einfacher. – steenslag

6

Die Python-Funktion funktioniert nur für ASCII-Zeichen; die [[: alnum]] regex würde Dinge wie "tëst" α machen? => wahr. match/\w/ Begegnungen unterstreichen, so dass Blätter

def isalpha(str) 
    !str.match(/[^A-Za-z]/) 
end 

das Python-Verhalten zu reproduzieren.

+0

python 'isalpha' unterstützt keine Zeichenfolge mit Ziffern – Anwar

+0

Dies gibt' true' für leere Zeichenfolge aber sollte 'false' zurückgeben. – ma11hew28