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

replace split string in JLIST element using ResultSet SQLITE

我有一个 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

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

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;
}

提前致谢!

你方法中的代码写得有点复杂。

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

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;