我有一个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
这样的方法替换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;
}
谢谢!
答案 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;