2016-04-14 5 views
0

I String ersetzen in einigen Teilen der Codetyp bin derzeit = type.Replace("TRIM", "RTRIM");Was statt Zeichenfolge verwendet wird, ersetzen in C#

type = type.Replace("TRIM", "RTRIM"); 
    StringBuilder builder =newStringBuilder(); 
    builder.AppendLine(" .....bla bla..."); 
    if (type.Trim() != ""){ 
    builder.AppendLine(@" WHERE ({0}) "); 
    } 

Die Datenbank aktuelle {0} Werte sind

  1. , lassen sich mit TRIM (VL9) LIKE '{1}%'
  2. TRIM (VL7) LIKE '{0}%' 3. (TRIM (VL9) LIKE '{0}%'))
  3. (VL9 LI KE '{1}%' AND (TRIM (VL9) LIKE '{0}%'))

Dies ist eine riesige Datenbank, und die Ersetzen-Funktion ist in vielen Dateien an vielen Orten eingesetzt. In Zukunft werden sie TRIM 's zu RTRIM' s in der Datenbank ändern, so dass dann im Code (.cs-Dateien) ersetzen Zeichenfolge wird, die uns einen Fehler gibt.

Gibt es einen einfachen Weg zu Code, der jetzt und nach zukünftigen Änderungen funktioniert?

PS: ursprünglich die CS- Abfragen in DB2 waren, die auf SQL Server jetzt geändert werden Anfragen und jetzt werden sie in db werden die Änderungen wie TRIM zu RTRIM) Ändern

+0

Regex verwendet werden können, aber für eine einfache Stelle ersetzen es wahrscheinlich übertrieben ist. – sln

+0

lassen sagt, wenn der Datenbankwert RTRIM VL9 LIKE '{1}%' AND (TRIM (VL9) LIKE '{0}%')) .. das wird wieder machen RTRIM und RRTRIM .. so was kann getan werden. . ?? Ich versuche, REGEX..Regex.Replace (Typ, "(? I) [^ A-Za-z] Trim", "RTRIM"); und die Ausgabe ist RTRIM VL9 LIKE '{1}%' UND RTRIM (VL9) LIKE '{0}%')) eine der geschweiften Klammern fehlt beim Ersetzen, wie kann das ignoriert werden. Wie kann ich Regex hier verwenden? – virtualreality

Antwort

0

Im Folgenden Code wird nur ausgeführt werden, wenn es keine "RTRIM" in Art:

if (!type.contains("RTRIM")) 
     { 
      type = type.Replace("TRIM", "RTRIM"); 
      if (!type.contains("RRTRIM")) 
      { 
       type = type.Replace("RRTRIM", "RTRIM"); 
      } 
      StringBuilder builder =newStringBuilder(); 
      builder.AppendLine(" .....bla bla..."); 
      if (type.Trim() != ""){ 
      builder.AppendLine(@" WHERE ({0}) "); 
      } 
     } 

aber da Sie wahrscheinlich Orte mit rrtrim bereits haben, und vielleicht sogar rrrtrim Sie dies tun können:

type = type.Replace("TRIM", "RTRIM"); 
type = type.Replace("RRTRIM", "RTRIM"); 
type = type.Replace("RRRTRIM", "RTRIM"); 
StringBuilder builder =newStringBuilder(); 
builder.AppendLine(" .....bla bla..."); 
if (type.Trim() != ""){ 
builder.AppendLine(@" WHERE ({0}) "); 
+0

es funktioniert .. danke – virtualreality

+0

dann bitte markieren Sie es als Antwort für andere Benutzer – Claudius

+0

lassen Sie sagt, wenn der Datenbankwert RTRIM VL9 LIKE '{1}%' AND (TRIM (VL9) LIKE '{0}%')). .dies wird wieder RTRIM und RRTRIM machen .. also was kann man machen .. ?? Ich versuche, REGEX..Regex.Replace (Typ, "(? I) [^ A-Za-z] Trim", "RTRIM"); und die Ausgabe ist RTRIM VL9 LIKE '{1}%' UND RTRIM (VL9) LIKE '{0}%')) eine der geschweiften Klammern fehlt beim Ersetzen, wie kann das ignoriert werden. Wie kann ich Regex hier verwenden? – virtualreality