заменить разделенную строку в элементе JLIST с помощью ResultSet SQLITE - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть модель 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 метод, подобный этому:

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 голосов
/ 30 сентября 2018

Код в вашем методе написан немного сложным способом.

Я использовал регулярное выражение и упростил код, который вы хотели написать, и вот он.

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

Я надеваюНе знаю, знакомы ли вы с регулярными выражениями, но с помощью регулярных выражений ваша работа выполняется довольно легко.Кроме того, использование конкатенации строк не очень хорошая идея, особенно если вам приходится делать это довольно часто, поэтому я использовал StringBuild для той же цели.Также используется свойство line.separator, поэтому независимо от того, на какой платформе вы запускаете код, в вашей строке будет соответствующая строка.Просто используйте мой метод вместо вашего и посмотрите, соответствует ли желаемая строка той, которую вы хотели.

Кроме того, в моем коде вам не придется вручную управлять вставкой "," или "", поскольку это делается автоматически какон присутствует в строке.

Также убедитесь, что вы импортируете эти два или любой необходимый импорт,

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