2017-06-27 3 views
1

Ich habe eine char [] originalCharArray einiger Größe.Schnellste Möglichkeit, CharArray vor SQL-Einfügung zu entkommen

Ich möchte ein neues Zeichen erstellen [] returnCharArray, so dass jedes Mal, wenn die Zeichen 'in der ursprünglichen Zeichen erscheint [], wird ein anderer so hinzugefügt:

"Hello' World" ---> "Hello'' World" 

Was ist der schnellste Weg zu tun, damit? Ich dachte darüber nach, returnCharArray so zu definieren, dass x2 die Größe von originalCharArray hat, und kopiere die Zeichen nacheinander aus dem ursprünglichen charArray (bei Bedarf extra hinzufügen) und entferne dann den überschüssigen Speicherplatz am Ende (spielt dieser zusätzliche Platz eine Rolle?)

Auch ich habe über StringBuilding nachgedacht, aber dann muss ich in String konvertieren, dann in CharArray.

Was ist die beste Praxis dafür?

+2

Sie könnten PreparedStatements verwenden, um dies automatisch zu tun. Wenn Sie versuchen, die SQL-Injection zu verhindern, gibt es mehr als nur Apostrophe, denen Sie begegnen können. –

Antwort

1

Sie replaceAll verwenden ' mit '' zu ersetzen:

char[] c = new char[]{'H','e','l','l','o','\'',' ','W','o','r','l','d'}; 
String s = String.valueOf(c); 
System.out.println("Before : " + s); 

s = s.replaceAll("'", "''"); 
System.out.println("After : " + s); 

char[] c_modified = s.toCharArray(); 

System.out.println(Arrays.toString(c_modified)); 

Ausgang:

Before : Hello' World 
After : Hello'' World 
[H, e, l, l, o, ', ', , W, o, r, l, d] 
2

Die Methode, die Sie beschrieben haben, um einen String zu durchlaufen, ist wahrscheinlich das einfachste und am wenigsten schmerzhaft. Erstellen Sie einfach eine neue Zeichenfolge, und führen Sie dann eine vollständige Ersetzung des einfachen Anführungszeichens durch zwei einfache Anführungszeichen durch.

String str = new String(originalCharArray); 
str = str.replaceAll("'", "''"); 
char[] newCharArray = str.toCharArray(); 

Demo

Verwandte Themen