Ich muss einen einfachen Code, der eine string
erhalten, und eine array of String
, und ersetzen Sie die ?
Zeichen mit jedem Element des Arrays.Bessere Möglichkeit, eine Reihe von Zeichen durch Zeichenfolgen zu ersetzen
Hier ist der Testfall in junit ist:
@Test
public void QueryFitterTest() {
ArrayList<String> args=new ArrayList<String>();
args.add("Bad code");
args.add("The code is buggy");
String res = QueryMaker.queryFitter("insert into vulnerability (name,descirption) values(?,?)",args);
String correctQuery="insert into vulnerability (name,descirption) values(Bad code,The code is buggy)";
assertEquals(correctQuery, res);
}
und hier ist der Code:
public static String queryFitter(String query, ArrayList<String> args){
String[] colapsedQuery = query.split("");
int parmNum=0;
for(int i=0;i<colapsedQuery.length;i++){
if(colapsedQuery[i]=="?"){
colapsedQuery[i]=args.get(parmNum);
parmNum++;
}
}
query=concatenator(colapsedQuery);
return query;
}
public static String concatenator(String[] colapsedQuery){
String delimiter = "";
String result = String.join(delimiter, colapsedQuery);
System.out.println("query is: "+result);
return result;
}
Der Code funktioniert gut, aber
ich nicht mein Ansatz mag Gibt es einen einfacheren Weg?
tl; dr auf dem dup: 'colapsedQuery [i] =="? "' Wird * niemals * wahr sein. – azurefrog
'colapsedQuery [i] =="? "'. Verwenden Sie ein Zeichen ''? ''Und verwenden Sie einfach' String.charAt (n) ' –
Wenn dies gegen SQL geht, wäre der" bessere "Weg, IMO, PreparedStatement zu verwenden. Was passiert, wenn in der Eingabe Sonderzeichen stehen? – KevinO