PHP中的Java自定义内爆方法
我试图在Java中复制php函数infrade() 这是我做的: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
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,因为我不想(或无法)考虑所有边缘情况。我认为干巴巴的违规行为比图书馆的额外空间更糟糕。