可能重复:
creating comma seperated string to be given as input to sql “IN” clause给逗号分隔的字符串作为输入到SQL “IN” 子句
HI,
我必须实现多个选择下拉菜单中,并且所选择的值shud被格式化为输入到sql的“IN”子句。
将所选值存储在一个字符串中。但是在值之间没有分隔符,所以我无法拆分字符串。还有其他任何字符串格式化方法。
可能重复:
creating comma seperated string to be given as input to sql “IN” clause给逗号分隔的字符串作为输入到SQL “IN” 子句
HI,
我必须实现多个选择下拉菜单中,并且所选择的值shud被格式化为输入到sql的“IN”子句。
将所选值存储在一个字符串中。但是在值之间没有分隔符,所以我无法拆分字符串。还有其他任何字符串格式化方法。
有趣的解决方案:将值添加到ArrayList
或LinkedList
,呼叫toString()
。并替换'[' - >'(',替换']' - >')'。
如果您有一个字符串集合,然后将它们复制到1个没有分隔符的字符串,则无法再将它们分开。只是不要这样做。如果您仍有问题,请发送有关您任务的更多详情。
如果知道下拉的价值和所有值是唯一的和对方的不子集,那么你可以使用String#contains()
或正则表达式来测试,数值已经被选中。
但是,如果连接保存选择的字符串,只需添加一些简单的分隔符(如常见的“;
”)就简单多了。
例为包含方法
String[] legalValues = {"YES","NO","MAYBE"};
String result = getSelection(); // returns a String like "MAYBEYES"
StringBuilder inClauseBuilder = new StringBuilder();
boolean isFirst = true;
for (String legalValue:legalValues) {
if (!result.contains(legalValue)
continue;
if (isFirst) {
isFirst = false;
} else {
inClauseBuilder.append(",");
}
inClauseBuilder.append("\"").append(legalValue).append("\"");
}
String inClause = inClauseBuilder.toString();
注意 - 这种做法将只要你有一个像
String[] legalValues = {"YES","NO","MAYBE-YES", "MAYBE-NO"};
^^^ ^^ ^^^ ^^
合法的值如果您存储中的所有值失败一个没有分隔符的字符串,你不能区分这些值!考虑一个空白('')是一个分隔符 - 所以你可能有一个没有注意到它:-) - 也许发布一个你的字符串的例子。 – FrVaBe 2011-01-06 10:19:49
@ K。 Claszen--一般情况下都是如此,但有特殊情况的解决方案。请参阅下面的答案。 – 2011-01-06 10:38:27