Announcement

Collapse
No announcement yet.

Regex.Replace Problem!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Regex.Replace Problem!

    Hallo!
    Ich habe mal ein Problem für euch Tüftler!
    Ich habe in einer Variable (locTemp) die Rechenoperation 110+112+113 stehen!
    Die Werte 110 112 113 stehen für IDs!(Also,hinter jeder ID steht in einer anderen Tabelle ein Geldbetrag, den ich mit dem SELECT auslese!Diesen Geldbetrag speichere ich in locErg!locPos ist eine Hilfsvariable,die mir am Anfang die ersten drei Stellen ausschneidet,also in diesem Fall die ID 110 und an diese Stelle den Geldbetrag aus der ID 110(sagen wir mal 99,95) einfügt!SO macht er das auch mit den beiden übrigen IDs!Wenn aber nun vor der allgemeinen Formel mit den IDs,Klammern gesetzt werden,dann haut das ja nicht mehr mit den drei Stellen ausschneiden am Anfang hin,weil er ja nicht ab der Stelle 0 sondern erst ab Stelle 1 drei Stellen ausschneiden dürfte!Daher meine Frage,gibt es eine andere Möglichkeit mit Hilfe von regex oder so,wo er mir für die richtigen IDs die richtigen Geldbeträge ändert,und nicht wie bei mir am Anfang passiert,wenn für ID 110 der Geldbetrag 45112,95 steht,ich dann den Geldbetrag für 112 einfügen möchte und ich dann mit Hilfe der Zeile:
    Code:
    locTemp = Regex.Replace(locTemp, locIDs(j), CStr(locErg))
    sowohl die ID 112,sowie auch im ersten Geldbetrag,wo ja auch die 112 vorkommt,diesen ändere!)Im nächsten Schritt habe ich die Pluszeichen entfernt und in ein Array gepackt,das locIDs heißt!Danach führe ich einen SELECT aus um mir die richtigen Berechnungswerte zu holen!So habe ich z.B. für die ID 110 den Rechenwert 14057,577611234 stehen. Nach diesem Schritt versuche ich mit den folgenden Schritten,der ID diesen Wert zuzuweisen,was ja auch funktioniert:
    Code:
    locTemp = Regex.Replace(locTemp, locIDs(j), CStr(locErg))
    Wenn ich nun mir im nächsten Schleifendurchlauf die ID 112 packe und das gleiche wieder mache(Wert 99,95),dann habe ich bei dem Versuch,der ID den Wert zuzuweisen das folgende Problem:Er schreibt mir dann 14057,577699,9534 + 99,95!Also er erkennt in dem vorherigen Term ebenfalls die 112 und überschreibt sie einfach mit der 99,95!Hat einer eine Idee,wie ich das auf einfachste Weise lösen kann???
    Mein jetziger Ansatz mit den drei Stellen wegschneiden funktioniert wie gesagt nur so lange, wie keine Klammern ins Spiel kommen,daher würde ich das gerne mit Regex lösen!
    Code:
    locTemp = locTemp.Remove(locPos, 3)
                            locTemp = locTemp.Insert(locPos, CStr(locErg))
                            locPos = locPos + CStr(locErg).Length + 1
Working...
X