使用ResultSet SQLITE替换JLIST元素中的拆分字符串

时间:2018-09-30 06:51:42

标签: java sqlite split resultset jlist

我有一个JList模型(listModelGrid),其中的项目带有这样的标签:

LastName, FirstName Spouse // e.g. This is 1st list item with labels
Children                   // e.g. This is 2nd list item with labels
Street                     // e.g. This is 3rd list item with labels
City, State Postal         // e.g. This is 4th list item with labels

enter image description here

我想用ResultSet.getString这样的方法替换Labels:

String labels = "";
labels += resultSet.getString("LastName")+", "+resultSet.getString("FirstName")+" "+
          resultSet.getString("Spouse") + "\n";
labels += resultSet.getString("Children") + "\n";
labels += resultSet.getString("Street") + "\n";
labels += resultSet.getString("City")+", "+resultSet.getString("State")+" "+
          resultSet.getString("Postal");

我尝试过,但是陷入了循环:

private String getPrintingLabels(ResultSet rs) throws SQLException {
    String str = "";
    for (int i = 0; i < listModelGrid.getSize(); i++) {
        String element = String.valueOf(listModelGrid.getElementAt(i));

        String[] lbls = element.split(",\\s");

        str += rs.getString(lbls[0])+", ";
        for(int j = 1; j < lbls.length ; j++) {
            // Stuck on her
        }

        String[] lbls2 = element.split("\\s");

        str += rs.getString(lbls2[0])+" ";
        for(int j = 1; j < lbls2.length ; j++) {
            // Stuck on her
        }
    }
    return str;
}

谢谢!

1 个答案:

答案 0 :(得分:1)

您的方法中的代码以某种复杂的方式编写。

我使用了正则表达式并简化了要编写的代码,就在这里。

private String getPrintingLabels(ResultSet rs) throws SQLException {
        Pattern p = Pattern.compile("([a-zA-Z]+)(,? )?");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < listModelGrid.getSize(); i++) {
            String element = String.valueOf(listModelGrid.getElementAt(i));

            Matcher m = p.matcher(element);
            while(m.find()) {
                sb.append(rs.getString(m.group(1)));
                if (m.group(2) != null) {
                    sb.append(m.group(2));
                }
            }
            sb.append(System.getProperty("line.separator")); // helps correctly insert a new line for any platform linux/windows/any
        }
        System.out.println(sb.toString());
        return sb.toString();
    }

我不知道您是否熟悉正则表达式,但是通过使用正则表达式,您的工作很容易完成。另外,使用String级联并不是一个好主意,特别是当您必须要做很多事情时,因此我将StringBuild用于相同的目的。还使用了line.separator属性,因此无论在哪个平台上运行代码,它都将在字符串中包含适当的行。只需使用我的方法而不是您的方法,然后查看所需的字符串是否是您想要的字符串即可。

在我的代码中,您也不必手动管理插入“,”或“”,因为插入字符串后会自动完成。

还要确保您导入了这两个或任何需要的导入,

import java.util.regex.Matcher;
import java.util.regex.Pattern;