# String überprüfen



## Kris (18. Mrz 2009)

Hallo

In ein Textfeld wird ein Name eingegeben. Eine Methode soll überprüfen, ob der Name korrekt ist. Der Anfangsbuchstabe darf nicht klein sein und das erste Zeichen muss ein Buchstabe sein. Gibt es da eine allgemeine Prüfung die man in sein Programm implementieren kann?
Ich habe zur Zeit einfach nur die Bedingung wenn charAt(0) nicht <65 oder >90 ist eingebaut. Hierbei werden Umlaute nicht berücksichtigt. Was nicht in meinem Interesse ist. Ich könnte auch charat(0)!=220 usw. benutzen, da müsste man aber alle Umlaute der verschiedenen Sprachen einbauen, was mir ziemlich Umständlich erscheint.
Hat Irgendjemand eine Idee oder einen Link?


----------



## babuschka (18. Mrz 2009)

Klingt ganz nach einem Fall für reguläre Ausdrücke (regex).
Damit kannst Du Dir ein Muster zusammenstellen, dem der String entsprechen muss.
Mehr Infor z.B. unter Java Regular Expressions.


----------



## L-ectron-X (18. Mrz 2009)

Zum Prüfen von Buchstaben und Zahlen gibts in der Klasse java.lang.Character die Methoden isDigit(char ch) und isLetter(char ch),

Aus Gründen der Benutzerfreundlichkeit kannst du doch, wenn das erste Zeichen ein Buchstabe ist, einen klein eingegebenen Buchstaben mit String#toUpperCase() in einen großen umwandeln.


----------



## Noctarius (18. Mrz 2009)

Regex ist der Begriff nach dem du suchst:
^([A-Z]{1}[a-zA-Z.-]*){1}(\ [A-Z]{1}[a-zA-Z.-]*)*$

Das matched sowohl nur Nachname ("Meier") als auch Vor- und Nachname ("Peter Meier") inklusive eventuellen Zweit- und Drittnamen ("Peter Meier Ludenscheidt") und achtet darauf, dass jeweils ein Buchstabe am Anfang Groß geschrieben ist. Die Überprüfung geht bis zu kranken Kombinationen wie "Dr. Med.-Dent. Peter Meier Ludenscheidt" 

Zum besseren Verständnis oder falls du dich intensiver mit Regex beschäftigen möchtest:
Regulärer Ausdruck ? Wikipedia


----------



## 0x7F800000 (18. Mrz 2009)

Ich bitte aber darum, es mit der Benutzerfeindlichkeit nicht zu übertreiben: schon klar dass Regex Spaß macht, aber diese ganzen Einschränkungen an Namen & Nicks (anfangen mit einem großen Buchstaben etc.) das geht einem so dermaßen auf den Geist 

Ich wurde bereits auf mehreren Seiten dazu gezwungen, mich als Ox7F800000 statt 0x7F800000 zu benennen, das ist so nervtötend, diese O's und 0's jetzt auseinanderzuhalten, brauche dauernd mehrere Versuche zum anmelden ;(

Hier in dem Forum ist es ja zum Glück nicht so


----------



## Noctarius (18. Mrz 2009)

Wenn ich aber eine Kundendatenbank haben will, dann möchte ich die Namen so geschrieben haben, dass bei einem Serienbrief die Groß- und Kleinschreibung nicht überprüft werden muss.


----------



## 0x7F800000 (18. Mrz 2009)

Kommt auf den Kontext an. 
Bei Kundendatenbanken: ja. 
Bei Foren und ähnlichen Sachen: ne, danke...


----------



## Noctarius (18. Mrz 2009)

Ebend  Wollte nur deine etwas generell ausgeführte Verteufellung abmildern


----------



## Kris (18. Mrz 2009)

Vielen Dank.

Erkennt die isLetter Methode alle Buchstaben? Egal welcher Sprachraum? 
Ich versuch es mal der UpperCase Methode aber wie finde ich herraus ob es ein kleiner Buchstabe ist oder kann ich einfach Grundsätzlich auf alles die UpperCase Methode anwenden?


----------



## L-ectron-X (18. Mrz 2009)

Ja, genau.

Was groß ist, bleibt groß, was es nicht ist, wird zu einem großen Buchstaben umgewandelt.


----------



## fjord (18. Mrz 2009)

Noctarius hat gesagt.:


> Regex ist der Begriff nach dem du suchst:
> ^([A-Z]{1}[a-zA-Z.-]*){1}(\ [A-Z]{1}[a-zA-Z.-]*)*$ [...]


Wofür baust du die {1} ein?


----------



## Noctarius (18. Mrz 2009)

gute Frage ^^ - Streich die weg *gg*


----------

