2017-05-10 3 views
-2

Ich habe meine SQL-Skript bekamWie ersetzen Symbole in einem Teil der Zeichenfolge

INSERT INTO("TEST1", "TEST2") VALUES("TEST3", "TEST4"); 

Ich brauche doublequotes ersetzen nur in TEST1 und TEST2. Out muss aussehen wie

INSERT INTO('TEST1', 'TEST2') VALUES("TEST3", "TEST4"); 

Ist es möglich, es zu tun? UPDATE: Wie geht das?

+0

@StefanWarminski, Check-Update –

+1

bei Werfen Sie einen Blick 'String' API (Stichwort ersetzen) –

+0

@SteveSmith pls, meine Frage überprüfen, es ersetzen wird mir alles doublequotes, aber ich muss sie nur in INTO-Abschnitt ändern. –

Antwort

1

Es ist einfach (PS Ecke Fall nicht berücksichtigt)

  1. Split String (erster Teil ==> von Insert bis Wert
  2. Ersetzen erster Teil
  3. firstPart Kombinieren und restlichen Teil

Bitte versuchen Sie den folgenden Code:

String inputQry = "INSERT INTO(\"TEST1\", \"TEST2\") VALUES(\"TEST3\", \"TEST4\");"; 

Integer indexOfValuesClause = inputQry.indexOf("VALUES"); // index where VALUES start 
String firstPart = inputQry.substring(0,indexOfValuesClause); // first part contains String upto VALUES clause 
firstPart = firstPart.replace("\"","'"); 
System.out.println(firstPart+inputQry.substring(indexOfValuesClause)); 

Ergebnis

INSERT INTO ('TEST1', 'TEST2') VALUES ("TEST3", "TEST4");

+0

Danke, Bruder. Die beste Antwort von allen. Weil einige Leute meine Frage nicht verstanden haben und angefangen haben, sie zu reduzieren. Vielen Dank! –

0

Das können Sie mit der replaceAll-Methode aus String und einem geeigneten regulären Ausdruck erreichen. Der folgende Code ersetzt alle " innerhalb der ersten Klammern:

String sqlCmd = "INSERT INTO(\"TEST1\", \"TEST2\") VALUES(\"TEST3\", \"TEST4\")"; 
sqlCmd = sqlCmd.replaceAll("(^[^\\(]*\\(|\\G,\\s*)\"([^\"]+)\"", "$1'$2'"); //result INSERT INTO('TEST1', 'TEST2') VALUES("TEST3", "TEST4") 
Verwandte Themen