Zba*_*ian 2 java string format implode
我试图在Java中复制php函数implode().
这就是我所做的:
private String implode(String delimiter, Map<String, String> map){
StringBuilder sb = new StringBuilder();
for(Entry<String, String> e : map.entrySet()){
sb.append(" "+delimiter+" ");
sb.append(" " + e.getKey() + " = '" + e.getValue() + "' ");
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
测试:
Map<String, String> myList = new HashMap<String, String>();
myList.put("address", "something1");
myList.put("last_name", "something2");
myList.put("first_name", "something3");
update_database("dummy", myList, "");
public void update_database(String table, Map<String, String> update_list, String condition){
String query = "UPDATE " + table + " SET ";
query += implode(",", update_list) + " " + condition;
System.out.println(query);
}
Run Code Online (Sandbox Code Playgroud)
输出:
UPDATE dummy SET,address ='something',last_name ='something2',first_name ='something3'
如果你之前使用过mysql,你知道它不是一个有效的查询,因为字符串查询以","开头.
如何格式化我的字符串以获得正确的查询?
你可以尝试这样的事情:
自己的实施
private String implode(String delimiter, Map<String, String> map){
boolean first = true;
StringBuilder sb = new StringBuilder();
for(Entry<String, String> e : map.entrySet()){
if (!first) sb.append(" "+delimiter+" ");
sb.append(" " + e.getKey() + " = '" + e.getValue() + "' ");
first = false;
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
StringUtils的
另一个解决方案是使用public static String join(Collection collection,char separator)