我需要製作一個簡單的代碼,它得到一個string
和一個array of String
,並用陣列的每個元素代替?
符號。用字符串替換一組符號的更好方法
這裏是測試用例在JUnit:
@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);
}
這裏是代碼:
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;
}
的代碼工作正常,但
我不喜歡我的做法,有沒有更簡單的方法來做到這一點?
tl; dr在dup:'colapsedQuery [i] ==「?」'將永遠不會*爲真。 – azurefrog
'colapsedQuery [i] ==「?」'。使用char''?'',並使用'String.charAt(n)' –
如果這是針對SQL的,那麼「更好」的方式IMO就是使用PreparedStatement。如果輸入中有特殊字符會發生什麼? – KevinO