可能重複:
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