string.Replace

Darkas

Erfahrenes Mitglied
Hi

ich hab mal wieder ein kleines Problem:
ich Arbeite im moment an einem Programm dass einen Term berechnen kann, und will einen in Klammern stehenden term durch sein ergebniss ersetzen. Es gibt aber dabei folgendes Problem: es wird immer nur ein Zeichen ausgetauscht.

Der code:
Code:
while (term.Contains("(") && term.Contains(")"))
            {
                num = (ushort)term.IndexOf("(");
                num2 = (ushort)term.IndexOf(")");
                term = term.Replace(splitToString(term.Substring((int)num - 1, (int)(num2 - num + 1)), " ")[0], Roll_Makro(term.Substring((int)num + 1, (int)(num2 - num - 1))).ToString());
            }

Das ganze ist eine Rekursive Funktion.

Achja, Variablen sind hier uninteressant
 
Hi

Hast du mal geprüft, was bei den einzelnen Funktionen zurück kommt?
Wenn die erste Funktion nur ein Zeichen zurückliefert sollte die Ursache klar sein.
Achja, Variablen sind hier uninteressant
Trotzdem eine Anmerkung dazu:
Du castest wild in diesen 3 Zeilen rum!. Das kommt der Performance und den Resourcen nicht grad entgegen.
 
ja, bei dem ganzen kommt eine Zahl (oder mehrere, je nachdem wie der Term aussieht) zurück, aber es wird halt auch nur das eine ersetzt.
Gibts da nicht eine möglichkeit wie ich den gesamten ausgewählten Bereich ersetzen kann?


Achja, Variablen sind hier uninteressant
Trotzdem eine Anmerkung dazu:
Du castest wild in diesen 3 Zeilen rum!. Das kommt der Performance und den Resourcen nicht grad entgegen.



Mit Variablen waren eigentlich die Variablen im term gemeint :)
Naja, wie könnte ich sowas denn besser machen?
 
Zuletzt bearbeitet:
Achso, du meinst die Typumwandlungen...

naja, wenn ich das ganze Casting weglassen will muss ich num und num2 zu int Datentypen machen. Das braucht mehr Ram (ich weiss aber nicht genau was hier mehr ins Gewicht fällt)
 
ok, ich hab jetzt die Typumwandlungen raus gemacht, aber ich habe immer noch das Problem dass der nur ein Teil des eigentlichen Strings ersetzt wird.
Ich will einen z.B. 7 Zeichen Substring durch einen mit einem Zeichen ersetzen. Wie mache ich das?
 
Der erste Parameter der Methode Replace definiert den Suchstring. Dieser wird durch den 2 Parameter ersetzt. Wenn deine Methode das falsche zurückliefert musst du entweder die Methode anpassen oder etwas anderes als deren Rückgabe an die Replace-MEthode weiterreichen.
 
Der Suchstring, den du übergibst wird komplett ersetzt durch den Inhalt des 2. Parameters. Wenn deine Methode "splitToString" nur ein Zeichen zurückliefert du aber eine ZEichenkette haben willst, arbeitet ggf. die Methode falsch.
 
Zurück