Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的Java自定义内爆方法_Java_String_Format_Implode - Fatal编程技术网

PHP中的Java自定义内爆方法

PHP中的Java自定义内爆方法,java,string,format,implode,Java,String,Format,Implode,我试图在Java中复制php函数infrade() 这是我做的: private String implode(String delimiter, Map<String, String> map){ StringBuilder sb = new StringBuilder(); for(Entry<String, String> e : map.entrySet()){ sb.append(" "+delimiter+" "); s

我试图在Java中复制php函数infrade()

这是我做的:

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();
}
私有字符串内爆(字符串分隔符,映射){
StringBuilder sb=新的StringBuilder();
对于(条目e:map.entrySet()){
sb.追加(“+分隔符+”);
sb.追加(“+e.getKey()+”='“+e.getValue()+”);
}
使某人返回字符串();
}
测试:

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);
}
Map myList=newhashmap();
myList.put(“地址”、“某物1”);
myList.put(“姓氏”、“某物2”);
myList.put(“名字”、“某物”);
更新_数据库(“dummy”,myList,”);
公共无效更新\u数据库(字符串表、地图更新\u列表、字符串条件){
字符串query=“UPDATE”+表+“SET”;
查询+=内爆(“,”,更新列表)+“+”条件;
System.out.println(查询);
}
输出:

更新虚拟集,地址='something',姓氏='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();
}
私有字符串内爆(字符串分隔符,映射){
布尔值优先=真;
StringBuilder sb=新的StringBuilder();
对于(条目e:map.entrySet()){
如果(!first)sb.追加(“+分隔符+”);
sb.追加(“+e.getKey()+”='“+e.getValue()+”);
第一个=假;
}
使某人返回字符串();
}
StringUtils


另一个解决方案是使用

您不需要自己编写。由谷歌制造。下面是一个例子:

Joiner joiner = Joiner.on("; ").skipNulls();
return joiner.join("Harry", null, "Ron", "Hermione");

这将返回字符串“Harry;Ron;Hermine”。请注意,在追加之前,所有输入元素都会使用Object.toString()转换为字符串。

您究竟为什么要为该库的一个类的一个函数导入整个库。@Achshar,因为我不想(或无法)考虑所有边缘情况。我认为干巴巴的违规行为比图书馆的额外空间更糟糕。