Hi zusammen,
habe folgendes Problem: Ich habe einen String mit bestimmten Platzhaltern.
"Das %A% ist ein %B% Test."
Nun möchte ich an den Stellen von %A% und %B% weitere Strings einsetzen. Das Problem ist, wenn ich das mit Replace mache und zuerst %A% und dann %B% ersetze: Ist in %A% auch wieder %B% enthalten wird das anschließend auch ersetzt. Das möchte ich gerne verhindern. Wie gehe ich denn da am geschicktesten vor? Muss ich mir da Positionen merken, was ich bereit ersetzt habe? Oder gibt es da was schönes in C#?
Gruß
Mike
Hi,
so ganz verstehe ich das nicht, aber ich denke mal du weist deinem string nicht den zu, den Replace zurückgibt.
Du musst es also so machen:
mystring = mystring.Replace("%A%", "Blabla");
mystring = mystring.Replace("%B%", "Blablabla");
oder:
mystring = mystring.Replace("%A%", "Blabla").Replace("%B%", "Blablabla");
Greetz,
Big Al
Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.
string result = String.Format("Das {0} ist ein {1} Test.",objectA,objectB);
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Hi,
danke für den Tipp. Also mit string.Format habe ich es jetzt mal versucht, funktioniert in einem Beispiel auch ganz gut. Nun wollte ich einen etwas komplexeren Text ersetzen und erhalte nun:
System.FormatException: Die Eingabezeichenfolge hat das falsche Format
Was könnte denn der Grund hierfür sein? Ich habe einfach ein Stück JavaScript Code, wo {0} und {1} usw. vorkommen und möchte die einfach ersetzen.
Gruß
Mike
Die Glaskugel sagt mir:Die Eingabezeichenfolge hat das falsche Format
😉
zeig mal mehr...
hmm... wo kommt die Eingabezeichenfolge denn her? Vielleicht ist das auch irgendein Codierungsproblem. Oder kannst Du mal in etwa die echte Zeichenfolge posten?
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
🙂 ja sorry.
<HTML>
<HEAD>
<script type="text/javascript">
<!--
function setTitle(title) {
top.document.getElementById("title").innerHTML = title;
}
function refresh() {
var artist = "{0}";
var title = "{1}";
var album = "{2}";
setTitle(title);
}
//-->
</script>
</HEAD>
<BODY OnLoad="javascript:refresh();" bgcolor="#000099"></BODY>
</HTML>
Das ist der String.
Gruß
Mike
Ich vermute mal, der mag die { bei den Funktionsaufrufen nicht.
Hm und kann ich das irgendwie umgehen? Oder kann ich andere Platzhalter einfügen, die dann ersetzt werden? Also das obige Beispiel mit Replace macht halt Probleme, wenn z.B. in %A% auch ein %B% enthalten ist, weil das dann wieder ersetzt wird. Das möchte ich gerne vermeiden.
Gruß
Mike
Das liegt an dengeschweiften Klammern im Javascript. Diese gelten ja als Steuerzeichen für denFormat-Befehl. Du musst doppelte geschweifte Klammern machen, um das zu escapen.
String.Format("myFunction(){{ Hier könnte Code stehen oder {0} erstezt werden... }}","irgendetwas");
gibt folgenden String:
myFunction(){ Hier könnte Code stehen oder irgendetwas erstezt werden... }
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca