我有一个 String[]
String[] name = {"amit", "rahul", "surya"};
Run Code Online (Sandbox Code Playgroud)
我想在IN子句中的sql查询中发送名称作为参数,所以我如何转换为格式
'amit','rahul','surya'
Run Code Online (Sandbox Code Playgroud)
Joe*_*ckx 197
要么自己编写一个简单的方法,要么使用其中的各种实用程序.
我个人使用apache StringUtils(StringUtils.join)
编辑:在Java 8中,您根本不再需要它:
String joined = String.join(",", name);
Run Code Online (Sandbox Code Playgroud)
Kei*_*oth 78
Android开发人员可能正在寻找TextUtils.join
Android文档:http: //developer.android.com/reference/android/text/TextUtils.html
码:
String[] name = {"amit", "rahul", "surya"};
TextUtils.join(",",name)
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 47
StringBuilder sb = new StringBuilder();
for (String n : name) {
if (sb.length() > 0) sb.append(',');
sb.append("'").append(n).append("'");
}
return sb.toString();
Run Code Online (Sandbox Code Playgroud)
Nic*_*men 30
if (name.length > 0) {
StringBuilder nameBuilder = new StringBuilder();
for (String n : name) {
nameBuilder.append("'").append(n.replace("'", "\\'")).append("',");
// can also do the following
// nameBuilder.append("'").append(n.replace("'", "''")).append("',");
}
nameBuilder.deleteCharAt(nameBuilder.length() - 1);
return nameBuilder.toString();
} else {
return "";
}
Run Code Online (Sandbox Code Playgroud)
小智 27
您还可以使用org.apache.commons.lang.StringUtilsAPI在Java中与字符串数组形成逗号分隔结果.
StringUtils.join(strArr,",");
如果您已经将Spring Framework作为依赖项,那么您还可以使用非常简单的util方法:
org.springframework.util.StringUtils.arrayToCommaDelimitedString(String[] array)
Run Code Online (Sandbox Code Playgroud)
您还可以使用Guava库简化它:
String[] name = {"amit", "rahul", "surya"};
String str = "'" + Joiner.on(",").skipNulls().join(name)
.replace(",", "','") + "'";
Run Code Online (Sandbox Code Playgroud)
小智 6
对先前 Java 8 解决方案的扩展
String result = String.join(",", name);
Run Code Online (Sandbox Code Playgroud)
如果您需要数组值的前缀或/和后缀
StringJoiner joiner = new StringJoiner(",");
for (CharSequence cs: name) {
joiner.add("'" + cs + "'");
}
return joiner.toString();
Run Code Online (Sandbox Code Playgroud)
或者简单的方法概念
public static String genInValues(String delimiter, String prefix, String suffix, String[] name) {
StringJoiner joiner = new StringJoiner(delimiter);
for (CharSequence cs: name) {
joiner.add(prefix + cs + suffix);
}
return joiner.toString();
}
Run Code Online (Sandbox Code Playgroud)
例如
For Oracle i need "id in (1,2,3,4,5)"
then use genInValues(",", "", "", name);
Run Code Online (Sandbox Code Playgroud)
But for Postgres i need "id in (values (1),(2),(3),(4),(5))"
then use genInValues(",", "(", ")", name);
Run Code Online (Sandbox Code Playgroud)
使用StringBuilder并遍历String [],并将每个String附加到其中:
public static String convert(String[] name) {
StringBuilder sb = new StringBuilder();
for (String st : name) {
sb.append('\'').append(st).append('\'').append(',');
}
if (name.length != 0) sb.deleteCharAt(sb.length()-1);
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146785 次 |
| 最近记录: |