Как разбить строку в Java? - PullRequest
       1

Как разбить строку в Java?

0 голосов
/ 11 октября 2011

У меня есть группа переключателей и группа флажков. Я хочу распечатать выбранные переключатели / флажки. Чтобы распечатать выбранный переключатель, я использую

Object table = radio.getValue();
System.out.println(table);

Я выбрал переключатель. Чтобы узнать, какие флажки были выбраны, я использую то же самое:

Object columns = check.getValue();
System.out.println(columns);

Я получаю флажки, которые были проверены, но с квадратными скобками вокруг них, например если я поставлю галочки

столбец A, столбец C, столбец F

напечатанная строка будет выглядеть так:

[столбец A, столбец C, столбец F]

Я хочу поместить строки выбранных флажков в мой sql-запрос, чтобы у меня было что-то вроде этого data.executeQuery("Select " + columns + " From " + table);

Он работает с table, но не работает с columns.

Ответы [ 3 ]

3 голосов
/ 11 октября 2011

Для этого конкретного приложения вам не нужно разбивать строку. Вы можете использовать

String str = columns.toString(); // "[colummA, colummC, colummF]"
System.out.println(str.substring(1, str.length() - 1));

Вы также можете сформировать строку через запятую, используя

StringBuilder sb = new StringBuilder();
for(Object obj : columns) {
    if (sb.length() != 0) sb.append(",");
    sb.append(obj);
}

Однако, чтобы ответить на вопрос:

Строка разделяется с помощью метода split(String) с использованием синтаксиса Regular Expression . Поскольку у вас есть список предметов, преобразование его в String и разбиение его не является эффективным решением.

1 голос
/ 11 октября 2011

это потому что по умолчанию

  check.getValue().toString()

вызывается и в зависимости от того, вызывается ли его List или HashSet и вызывается метод toString () по умолчанию для List / HashSet, который по умолчанию добавляет [] при печати значений, поэтому для вашего случая вы можете использовать коллекцию с переопределенной toString () согласно вашему требованию или просто напишите свой собственный метод toString и вызовите его вместо метода toString по умолчанию

вот пример реализации, если это HashSet

  private String getHashSetString(Set<String> myset){
    StringBuilder sb = new StringBuilder();
    Iterator<String> i = myset.iterator();
    if (! i.hasNext())
        return "";
    for (;;) {
        Long e = i.next();
        sb.append(e);
        if (! i.hasNext())
        return sb.toString();
        sb.append(",");
    }
}

Так что вместо

  data.executeQuery("Select " + columns + " From " + table);

запись

  data.executeQuery("Select " + columns.getHashSetString() + " From " + table);
1 голос
/ 11 октября 2011

столбцы - это массив, содержащий все значения выбранных флажков. Убедитесь, что метод toString по умолчанию выводит элементы, разделенные ","

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...