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