Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Geschicktes Ersetzen von Mustern
miketech
myCSharp.de - Member



Dabei seit:
Beiträge: 82

Themenstarter:

Geschicktes Ersetzen von Mustern

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Big Al
myCSharp.de - Member



Dabei seit:
Beiträge: 342
Herkunft: Mannheim

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.170
Herkunft: Trier -> München

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
miketech
myCSharp.de - Member



Dabei seit:
Beiträge: 82

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
marsgk
myCSharp.de - Member



Dabei seit:
Beiträge: 1.439
Herkunft: Linz, Austria

beantworten | zitieren | melden

Die Glaskugel sagt mir:Die Eingabezeichenfolge hat das falsche Format
;-)
zeig mal mehr...
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.170
Herkunft: Trier -> München

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
miketech
myCSharp.de - Member



Dabei seit:
Beiträge: 82

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
marsgk
myCSharp.de - Member



Dabei seit:
Beiträge: 1.439
Herkunft: Linz, Austria

beantworten | zitieren | melden

Ich vermute mal, der mag die { bei den Funktionsaufrufen nicht.
private Nachricht | Beiträge des Benutzers
miketech
myCSharp.de - Member



Dabei seit:
Beiträge: 82

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.170
Herkunft: Trier -> München

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
miketech
myCSharp.de - Member



Dabei seit:
Beiträge: 82

Themenstarter:

beantworten | zitieren | melden

Ah klasse, danke!

Gruß

Mike
private Nachricht | Beiträge des Benutzers