我想执行一个类似的查询 从“xyz_DB”中选择ID。“test”用户所在的位置('a','b')
所以相应的代码就像
String s="(";
for(String user:selUsers){
s+= " ' " + user + " ', ";
}
s+=")";
从test中选择ID,其中userId位于s;
以下代码将s的值形成为('a','b',) 我想在数组结束后删除逗号怎么做?
答案 0 :(得分:4)
以下是一种方法:
String s = "(";
boolean first = true;
for(String user : selUsers){
if (first) {
first = false;
} else {
s += ", ";
}
s += " ' " + user + " '";
}
s += ")";
但如果涉及循环,使用StringBuilder组装String会更有效。
StringBuilder sb = new StringBuilder("(");
boolean first = true;
for(String user : selUsers){
if (first) {
first = false;
} else {
sb.append(", ");
}
sb.append(" ' ").append(user).append(" '");
}
sb.append(")");
String s = sb.toString();
答案 1 :(得分:3)
这就是诀窍。
String s = "";
for(String user : selUsers)
s += ", '" + user + "'";
if (selUsers.size() > 0)
s = s.substring(2);
s = "(" + s + ")";
但是,一些指示:
StringBuilder
和append
。为了好玩,斯蒂芬C答案的一个变种:
StringBuilder sb = new StringBuilder("(");
boolean first = true;
for(String user : selUsers){
if (!first || (first = false))
sb.append(", ");
sb.append('\'').append(user).append('\'');
}
sb.append(')');
你甚至可以像这样做循环: - )
for(String user : selUsers)
sb.append(!first || (first=false) ? ", \'" : "\'").append(user).append('\'');
答案 2 :(得分:1)
使用带有索引的循环的“旧样式”,然后在除最后一个用户名之外的每个用户名上添加逗号:
String[] selUsers = {"a", "b", "c"};
String s="(";
for(int i = 0; i < selUsers.length; i++){
s+= " ' " + selUsers[i] + " ' ";
if(i < selUsers.length -1){
s +=" , ";
}
}
s+=")";
但正如其他人已经提到的那样,在连接字符串时使用StringBuffer:
String[] selUsers = {"a", "b", "c"};
StringBuffer s = new StringBuffer("(");
for(int i = 0; i < selUsers.length; i++){
s.append(" ' " + selUsers[i] + " ' ");
if(i < selUsers.length -1){
s.append(" , ");
}
}
s.append(")");
答案 3 :(得分:1)
从apache commons使用StringUtils.join
。
答案 4 :(得分:1)
在添加尾随')'之前,如果它是逗号,我将去除字符串的最后一个字符,或者只是用右括号替换尾随逗号 - 在伪代码中,类似
if s.last == ',' then
s = s.left(s.length() - 1);
end if;
s = s + ')';
或
if s.last == ',' then
s.last = ')';
else
s = s + ')';
end if;
分享并享受。
答案 5 :(得分:0)
我会s+= " ,'" + user + "'";
(将逗号放在值之前)并在循环中添加一个计数器,如果计数器为s = "'" + user + "'";
(或1
,我只需0
},取决于你开始计算的地方)。
答案 6 :(得分:0)
(N.B。 - 我不是Java人,因此这里的语法可能有误 - 如果是的话道歉)。
如果selUsers
是一个数组,为什么不这样做:
selUsers.join(',');
这应该做你想要的。
修改强>
看起来我错了 - 我认为Java内置了这个功能。看起来Apache项目的功能与我的意思相同。看看这个SO答案:Java: function for arrays like PHP's join()?
答案 7 :(得分:0)
Java 1.4 +
s = s.replaceFirst("\\, \\)$", ")");
编辑:我在括号前忘记了最后一个空格
答案 8 :(得分:0)
我完全支持Stephen C的答案 - 这是我想建议的那个:只是避免添加额外的逗号。
但在您的特殊情况下,以下内容也应该有效:
s = s.replace(", \\)", ")");
它只是用单个括号", )"
替换子串")"
。
答案 9 :(得分:0)
StringBuilder有一个非常好的append(int)重载。
String [] array = {"1","2","3" ...};
StringBuilder builder = new StringBuilder();
builder.append(s + "( ")
for(String i : array)
{
if(builder.length() != 0)
builder.append(",");
builder.append(i);
}
builder.append(" )")
从here
无耻地复制回答