Zeichen ¿ macht Probleme
Flor
- javascript
0 Reiner M.0 Axel Richter0 Ashura0 Axel Richter0 Flor0 wahsaga0 Axel Richter0 Flor
0 Axel Richter
Hallo Leute,
ich hoffe mir kann jemand einen Hinweis geben - ich habe ein Problem und komme nicht weiter.. )-:
Also auf meiner Weibseite gibt der User einen String in ein Input ein.
Mit Javascript (sorry - php hat der Webspace nicht) lese ich den String ein und zwecks weiterverarbeitung tausche ich einige Zeichen um.
Weitestgehend funktioniert das ... Aber: ich möchte auch
das "Falschrum-Fragezeichen" löschen können. Normalerweise mit dieser
Zeile: str = str.replace(/¿/," ");
Aber wenn ich die einfüge funktionier das ganze Script nicht mehr ?!
Also -falls das von Bedeutung ist: Ich habe als oberste Zeile des Dokuments das hier stehen <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">.
Ich hoffe ich habe mein Problem so dargestellt, dass Ihr mich versteht und hoffe auf eine Antwort.
Viele Gruesse
Florencia
Hier nochmal die ganze funktion. Die Zeile die nicht funktioniert ist auskommentier.
function clst(str) {
for (n=0; n<str.length; n++)
{
str = str.replace(/,/,"");
str = str.replace(/ /," ");
str = str.replace(/¿/," ");
//str = str.replace(/?/," ");
str = str.replace(/á/,"á");
str = str.replace(/é/,"é");
}
str=str.toLowerCase();
return str;
}
Ich kenne mich zwar mit JavaScript net so toll aus, aber versuch es mal hiermit: %C2%BF statt mit ¿
Hallo,
Zeile: str = str.replace(/¿/," ");
Aber wenn ich die einfüge funktionier das ganze Script nicht mehr ?!
Doch.
Hier nochmal die ganze funktion. Die Zeile die nicht funktioniert ist auskommentier.
Ja, und das ist die mit dem richtigrumen ;-) Fragezeichen
function clst(str) {
for (n=0; n<str.length; n++)
{
str = str.replace(/,/,"");
str = str.replace(/ /," ");
str = str.replace(/¿/," ");
//str = str.replace(/?/," ");
str = str.replace(/á/,"á");
str = str.replace(/é/,"é");}
str=str.toLowerCase();
return str;
}
Dieses Fragezeichen hat innerhalb eines regulären Ausdrucks eine Spezialbedeutung http://de.selfhtml.org/perl/sprache/regexpr.htm#maskierung. Wenn Du das Zeichen "?" meinst, musst Du es deshalb maskieren.
viele Grüße
Axel
Hallo Flor.
Zeile: str = str.replace(/¿/," ");
Anmerkung: das erste Argument der replace-Methode muss kein regulärer Ausdruck sein, eine einfache Zeichenkette genügt.
Einen schönen Dienstag noch.
Gruß, Ashura
Hallo,
Zeile: str = str.replace(/¿/," ");
Anmerkung: das erste Argument der replace-Methode muss kein regulärer Ausdruck sein, eine einfache Zeichenkette genügt.
Tatsächlich. Schön, dass man immer wieder was dazulernt.
viele Grüße
Axel
Hallo,
Danke für eure Hilfe.
Sorry fürs AufDerLeitungStehen. Aber ich konnte meine Javascript
noch nicht zum laufen bringen...
Wie genau schreib ich das denn? einer meiner Versuche sieht z.B. so aus:
str = str.replace(/(?)/," ");
hi,
Sorry fürs AufDerLeitungStehen. Aber ich konnte meine Javascript
noch nicht zum laufen bringen...Wie genau schreib ich das denn?
Du hast doch jetzt schon gesagt bekommen, dass die replace-Methode gar nicht unbedingt einen regulären Ausdruck haben will, sondern sich auch mit einem einfachen String zufriedengeben würde (denn sie natürlich obendrein performanter ersetzen könnte).
einer meiner Versuche sieht z.B. so aus:
str = str.replace(/(?)/," ");
Warum also nicht einfach
str = str.replace("?"," ");
gruß,
wahsaga
Hallo,
Sorry fürs AufDerLeitungStehen. Aber ich konnte meine Javascript
noch nicht zum laufen bringen...Wie genau schreib ich das denn? einer meiner Versuche sieht z.B. so aus:
str = str.replace(/(?)/," ");
Das funktioniert nicht? Welche Fehlermeldung kommt? Die Klammern sind zwar nicht notwendig, dürften aber auch nicht stören.
Hier mal ein Beispiel:
<script type="text/javascript">
function clst(str) {
str = str.replace(/,/g,"");
str = str.replace(/¿/g," ");
str = str.replace(/\?/g," ");
str = str.replace(/á/gi,"á");
str = str.replace(/é/gi,"é");
while(str.search(/ /) != -1) {
str = str.replace(/ /g," ");
}
str=str.toLowerCase();
return str;
}
var myString=" HáLLo? ¿, WÉlt? ¿, HÁllO?¿, Wélt?¿"
alert(clst(myString));
</script>
viele Grüße
Axel
Hallo & Danke !!
Also ich hatte vorher keine Fehlermeldung, aber das Fragezeichen ausgetauscht hat er auch nicht.
Aber ich habe Deinen geposteten Code reinkopiert und das funktioniert!
Vielen Dank für Deine / eure Hilfe
Florencia
Hallo,
function clst(str) {
for (n=0; n<str.length; n++)
{
str = str.replace(/,/,"");
str = str.replace(/ /," ");
str = str.replace(/¿/," ");
//str = str.replace(/?/," ");
str = str.replace(/á/,"á");
str = str.replace(/é/,"é");}
str=str.toLowerCase();
return str;
}
Das sehe ich jetzt erst: Wozu ist Die Schleife "for (n=0; n<str.length; n++)" da? Schau Dir mal die Bedeutung des Flags "/g" an http://de.selfhtml.org/perl/sprache/regexpr.htm#flags.
Bsp.:
str = str.replace(/é/g,"é");
viele Grüße
Axel
Hallo Axel.
str = str.replace(/é/g,"é");
Öhm, die Flags für die replace-Methode gehören doch in das dritte Argument?
(Hast du ja schließlich selbst verlinkt.)
Einen schönen Dienstag noch.
Gruß, Ashura
hi,
str = str.replace(/é/g,"é");
Öhm, die Flags für die replace-Methode gehören doch in das dritte Argument?
"This parameter is only used if the first parameter is a string."
gruß,
wahsaga
Hallo Gunnar™.
Öhm, die Flags für die replace-Methode gehören doch in das dritte Argument?
Bei einem regulären Ausdruck aber nicht:
This parameter is only used if the first parameter is a string.
Das würde aber darauf hindeuten, dass eine einfache Zeichenkette als erstes Argument intern dennoch als regulärer Ausdruck verarbeitet wird, sonst gäbe es ja keine Möglichkeit, Flags zu verwenden.
Einen schönen Dienstag noch.
Gruß, Ashura