Grossbuchstaben erzeugen
David Mously
- javascript
Hallo Forum,
ich habe ein kleines Problem:
ich möchte erreichen, dass ein Name, der in ein Formular-
feld "realname" eingetragen wird, "gesäubert" wird, d.H.
Zuerst soll der ganze Text in Kleinbuchstaben umgewandelt werden,
dann soll der erste Buchstabe in einen Großbuchstaben
umgewandelt werden,
jeder Buchstabe, der nach einem Leerzeichen kommt, soll ebenfalls
groß geschrieben werden.
Punkt 1) und 2) funktionieren:
nameComp = document.eingabe.realname.value.toLowerCase();
nameComp = document.eingabe.realname.value.substr(0,1).toUpperCase() +document.eingabe.realname.value.substr(1,(document.eingabe.realname.value.length-1));
Punkt 3) habe ich folgendermaßen probiert:
for(i=0;i<8;++i)
{
whitespace = nameComp.search(/\s/);
if(whitespace != -1)
{
nameComp = nameComp.substring(0,whitespace+1).replace(/\s/,"_-_") + nameComp.substr(whitespace+1,1).toUpperCase() +document.eingabe.realname.value.substr(whitespace+2,(document.eingabe.realname.value.length-1));
}
}
for(i=0;i<8;++i)
{
nameComp = nameComp.replace(/_-_/," ");
}
Insgesamt achtmal wird der String auf ein Leerzeichen hin durchsucht,
wird eins gefunden, wird das folgende Zeichen in einen Großbuchstaben
gewandelt, und das Leerzeichen durch "_-_" ersetzt, damit bei nächsten
Suchlauf das nächste Leerzeichen gefunden werden kann.
Anschließend werden alle "_-_" wieder durch ein Leerzeichen ersetzt.
Das klappt so halbwegs, wenn jemand allerdings mehrere Leerzeichen
zwischen zwei Namensteilen eingibt, wird z.B. aus "bernd blindtext"
plötzlich "Bernd Indext" oder ähnlicher Blödsinn.
Weiss jemand, warum? Oder gibt es zu diesem Problem vielleicht eine
1000-fach erprobte Standardlösung??? ;-) Im Forumsarchiv jedenfalls
habe ich sie nicht gefunden...
Vielen Dank für Eure Hilfe
David
Hallo
Versuch doch einfach eine ganz normale for-schleife
(In Pseudocode)
Für alle Zeichen im String
Schau, ob Zeichen Leerzeichen ist,
wenn ja
Für alle weiteren Zeichen
Schau, ob Zeichen Leerzeichen ist
wenn nein, Zeichen großschreiben; innere Schleife beenden
Eventuell muß man dann noch ein paar Sonderfälle (""," ",usw) berücksichtigen
Henryk Plötz
Grüße von der Ostsee
Hi,
Ohne Dein Programm genau analysiert zu haben, warum nicht einfach folgende Lösung:
input=document.eingabe.realname.value;
nameComp='';
for(i=0;i<input.length;i++)
{
if(i==0 input.charAt(i-1)==' ')
nameComp+=input.charAt(i).toUpperCase();
else nameComp+=input.charAt(i);
}
Naja, nicht getestet...
Gruß
Steffen