4 replace zusammenfassen
farant
- javascript
Hallo Forumsmitglieder
Ich habe einen Regulären Ausdruck um übergebenen Unicode zu ersetzen. Besser gesagt ich habe 4 davon...
var findw = findw.replace(/%F6/, "ö"); // ersetze ö
var findw = findw.replace(/%E4/, "ä"); // ersetze ä
var findw = findw.replace(/%FC/, "ü"); // ersetze ü
var findw = findw.replace(/%DF/, "ß"); // ersetze ß
gibt es nun eine Möglichkeit alle 4 in einem Zusammenzufassen.
Ich hoffe nämlich dass sich dann damit mein IE-Problem beheben lässt; im IE wird nur der erste replace ausgeführt - in Opera und Firefox funktioniert es bei allen 4en.
Vielen Dank für eure Hilfe
Farant
Hallo,
Ich habe einen Regulären Ausdruck um übergebenen Unicode zu ersetzen. Besser gesagt ich habe 4 davon...
var findw = findw.replace(/%F6/, "ö"); // ersetze ö
var findw = findw.replace(/%E4/, "ä"); // ersetze ä
var findw = findw.replace(/%FC/, "ü"); // ersetze ü
var findw = findw.replace(/%DF/, "ß"); // ersetze ß
Warum deklarierst Du die Variable findw immer wieder neu? Das var gehört nur vor die erste Deklaration.
gibt es nun eine Möglichkeit alle 4 in einem Zusammenzufassen.
Soweit ich weiß, nein.
Ich hoffe nämlich dass sich dann damit mein IE-Problem beheben lässt; im IE wird nur der erste replace ausgeführt - in Opera und Firefox funktioniert es bei allen 4en.
Hm, kann ich nicht bestätigen. Oder meinst Du, dass immer nur das erste %F6, %E4, %FC, %DF ersetzt wird? Das liegt aber daran, dass Dein regulärer Ausdruck mehr nicht abdeckt. Siehe http://de.selfhtml.org/javascript/objekte/regexp.htm#allgemeines - Syntax regulärer Ausdrücke -
/.../g /aus/g findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert
Beispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Titel</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
<!--
window.onload = function() {
var myMonitor = document.getElementById("monitor");
var findw = "D%F6s (da%DF) %FCst ein T%E4st m%FCt Uml%E4uten."
myMonitor.innerHTML = findw + "<br>";
var findw = findw.replace(/%F6/g, "ö"); // ersetze ö
findw = findw.replace(/%E4/g, "ä"); // ersetze ä
findw = findw.replace(/%FC/g, "ü"); // ersetze ü
findw = findw.replace(/%DF/g, "ß"); // ersetze ß
myMonitor.innerHTML += findw + "<br>";
};
//-->
</script>
</head>
<body>
<div id="monitor"> </div>
</body>
</html>
viele Grüße
Axel
Lieber Axel,
eine kleine Ergänzung...
/.../g /aus/g findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert
Wie war das eigentlich mit Multiline Mode? Ist dieses Suchmuster auch in der Lage Zeilenumbrüche zu ignorieren? Meiner Meinung nach sollte da nicht nur "g", sondern sogar "mg" stehen.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo Felix,
/.../g /aus/g findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert
Wie war das eigentlich mit Multiline Mode? Ist dieses Suchmuster auch in der Lage Zeilenumbrüche zu ignorieren? Meiner Meinung nach sollte da nicht nur "g", sondern sogar "mg" stehen.
hast Du seit Deinem Flash-Einbindproblem nicht mehr weiter recherchiert? Ich hab's jedenfalls nicht getan - und wäre wie Du froh, Genaueres über die Auswirkung des Modifiers m zu wissen.
Freundliche Grüße
Vinzenz
Hallo,
/.../g /aus/g findet "aus" so oft wie es in dem gesamten zu durchsuchenden Bereich vorkommt. Die Fundstellen werden intern in einem Array gespeichert
Wie war das eigentlich mit Multiline Mode? Ist dieses Suchmuster auch in der Lage Zeilenumbrüche zu ignorieren? Meiner Meinung nach sollte da nicht nur "g", sondern sogar "mg" stehen.
Nein. Das Suchmuster /%E4/ muss keine Zeilenumbrüche ignorieren. Es beinhaltet ja keine, sondern sucht nur nach der Zeichenfolge %E4.
Ich hab's jedenfalls nicht getan - und wäre wie Du froh, Genaueres über die Auswirkung des Modifiers m zu wissen.
Er tut das, was s.oliver scheibt. Er sorgt dafür, dass man in Strings, die Zeilenumbrüche enthalten, mit ^(Zeilenanfang) und $(Zeilenende) nach einzelnen Zeilen suchen kann.
Beispiel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Titel</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
<!--
window.onload = function() {
var myMonitor = document.getElementById("monitor");
var findw = "Das \nist \nein\n Test. So \nein\n Quatsch!"
//var findw = document.getElementsByTagName("P")[0].innerHTML;
//var findw = document.getElementsByTagName("P")[0].firstChild.nodeValue;
myMonitor.value = findw;
//Wir suchen ein allein in der Zeile stehendes "ein"
alert(findw.match(/^ein$/mg));
};
//-->
</script>
</head>
<body>
<textarea rows="10" cols="50" id="monitor"></textarea>
<p>Das
ist
ein
Test. So
ein
Quatsch!</p>
</body>
</html>
Das Problem ist, dass im IE weder in [ElementNode].innerHTML noch in [TextNode].nodeValue zeilenumbrüche enthalten sind.
viele Grüße
Axel
Lieber Axel,
Er tut das, was s.oliver scheibt. Er sorgt dafür, dass man in Strings, die Zeilenumbrüche enthalten, mit ^(Zeilenanfang) und $(Zeilenende) nach einzelnen Zeilen suchen kann.
endlich hab auch ich's kapiert! Vielen Dank (und ein fettes "fachlich hilfreich")!
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Servus,
Wie war das eigentlich mit Multiline Mode? Ist dieses Suchmuster
auch in der Lage Zeilenumbrüche zu ignorieren? Meiner Meinung nach
sollte da nicht nur "g", sondern sogar "mg" stehen.
der Parameter 'm' sorgt eigentlich nur dafür, dass die Textmarken '^'
und '$' neben dem eigentlichen Anfang und Ende des Strings, auch nach
bzw. vor eventuellen Zeilenumbrüchen im String ansetzen - er ist für
dieses Beispiel also ohne Belang.
Grüsse
Lieber s.oliver,
vielen Dank für Deine Erläuterungen. Es sollte aber erst Axel gelingen, dass ich kapiere, was Du mir da sagen willst... :-/ Bin halt momentan net so schnell im Hirn, was vielleicht (passende Ausrede ist immer gut) an meinem mehr als sonst vergrützten Kopf liegen mag.
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Servus,
vielen Dank für Deine Erläuterungen. Es sollte aber erst Axel
gelingen, dass ich kapiere, was Du mir da sagen willst...
tut mir leid, ich versuche mich bei der nächsten Gelegenheit klarer
auszudrücken. Davon einmal abgesehen, bin ich schon zufrieden, wenn
überhaupt eine Reaktion erfolgt. ;)
Grüsse
Hallo farant,
durch das Schlüsselwort var deklarierst Du Deine Variable auch immer wieder neu und überschreibst somit dessen alten Wert.
gibt es nun eine Möglichkeit alle 4 in einem Zusammenzufassen.
Du könntest dazu eine Funktion nutzen, nach diesem Prinzip:
function replaceUmlauts(string){
var Ar = new Array(2);
Ar[0] = new Array("Ö", "ö", "Ä", "ä", "Ü", "ü", "ß");
Ar[1] = new Array("Ö", "ö", "Ä", "ä", "Ü", "ü", "ß");
for (var i=0; i<Ar[0].length; i++){
myRegExp = new RegExp(Ar[0][i],"g");
string = string.replace(myRegExp, Ar[1][i]);
}
return string;
}
alert(replaceUmlauts("äüß"));
Letztlich sieht es aber ehr so aus, als suchst Du decodeURI()
Mit freundlichem Gruß
Micha