簡體   English   中英

如何在Java中分割字符串?

[英]How to split a string in Java?

我有一組單選按鈕和一組復選框。 我想打印出選定的單選按鈕/復選框。 要打印出我使用的單選按鈕

Object table = radio.getValue();
System.out.println(table);

我選擇了單選按鈕。 要獲取已選中的復選框,請使用相同的復選框:

Object columns = check.getValue();
System.out.println(columns);

我得到了已選中但周圍有方括號的復選框,例如,如果我選中了這些復選框

列A,列C,列F

打印的行將如下所示:

[A欄,C欄,F欄]

我想將所選復選框的字符串放入我的sql查詢中,所以我有類似這樣的數據data.executeQuery("Select " + columns + " From " + table);

它適用於table但不適用於columns

對於此特殊應用程序,您無需拆分字符串。 您可以使用

String str = columns.toString(); // "[colummA, colummC, colummF]"
System.out.println(str.substring(1, str.length() - 1));

您還可以使用以下命令形成逗號分隔的字符串

StringBuilder sb = new StringBuilder();
for(Object obj : columns) {
    if (sb.length() != 0) sb.append(",");
    sb.append(obj);
}

但是,要回答這個問題:

使用正則表達式語法通過split(String)方法split(String) 當您具有項目列表時,將其轉換為String並將其拆分不是有效的決定。

columns是一個包含選定復選框的所有值的數組。 確保默認的toString方法輸出以“,”分隔的項目

這是因為默認

  check.getValue().toString()

被調用,並取決於是調用List / HashSet的List還是HashSet以及默認的toString()方法,默認情況下,該方法在打印值時追加[],因此對於您而言,您可以使用帶有覆蓋的toString()方法的集合根據您的要求,或只編寫自定義toString方法並調用它,而不是默認的toString方法

如果是HashSet,這是一個示例實現

  private String getHashSetString(Set<String> myset){
    StringBuilder sb = new StringBuilder();
    Iterator<String> i = myset.iterator();
    if (! i.hasNext())
        return "";
    for (;;) {
        Long e = i.next();
        sb.append(e);
        if (! i.hasNext())
        return sb.toString();
        sb.append(",");
    }
}

所以代替

  data.executeQuery("Select " + columns + " From " + table);

  data.executeQuery("Select " + columns.getHashSetString() + " From " + table);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM