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?
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.
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.
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"
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 ;(
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.
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?