繁体   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