像PHP中的Java自定义内爆方法

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,你知道它不是一个有效的查询,因为字符串查询以","开头.

如何格式化我的字符串以获得正确的查询?

Fra*_*eth 6

你可以尝试这样的事情:

自己的实施

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)