Удалить скобки из списка, установленного в текстовое окно?

Я разбираю содержимое, используя следующий код с jsoup.

try{ Elements divElements = jsDoc.getElementsByTag("div"); for(Element divElement : divElements){ if(divElement.attr("class").equals("article-content")){ textList.add(divElement.text()); text = textList.toString(); } } } catch(Exception e){ System.out.println("Couldnt get content"); } 

Единственная проблема заключается в том, что содержимое возвращается с помощью скобок вокруг него [].

Я предполагаю, что это из-за списка, на который я его устанавливаю. Как я могу удалить их?

Заменить:

 text = textList.toString(); 

с:

 text = textList.toString().replace("[", "").replace("]", ""); 

Да, это из-за Списка. У вас есть опции:
Подкласс любого TextList и переопределить toString () или

 String temp = textList.toString(); text = temp.subString(1, temp.size() -2); 

Для большинства объектов метод toString() не предназначен для отображения, а обычно для отладки. Это связано с тем, что метод toString() обычно не имеет определенного формата и может варьироваться в зависимости от конкретного используемого класса. Например, LinkedList и ArrayList могут возвращать разные значения из toString() . Это маловероятно, но его нужно избегать. Конечно, если объект представляет собой фактический текст ( String , CharSequence , CharSequence ), указанное выше не применяется.

Кроме того, вы создаете и назначаете строку несколько раз в цикле for. Вместо этого вы должны создать строку только после завершения цикла for.

Чтобы создать строку, вы можете использовать ее самостоятельно или использовать библиотеку, например Apache commons lang , которая имеет метод утилиты StringUtils.join() .

Если вы катите свои собственные, это может выглядеть примерно так:

 Elements divElements = jsDoc.getElementsByTag("div"); Iterator<Element> iterator = divElements.iterator(); StringBuilder builder = new StringBuilder(); while (iterator.hasNext()){ Element divElement = iterator.next() if (divElement.attr("class").equals("article-content")){ builder.append(divElement.text()); if (iterator.hasNext()) { builder.append(", "); } } } text = builder.toString(); 

Используя regex для замены ведущих и конечных скобок, String.replace () не работает для случаев, когда содержимое списка содержит скобки.

 String text = textList.toString().replaceAll("(^\\[|\\]$)", ""); 

Внесите свой собственный метод для создания String , используя итерацию и StringBuffer . Неправильная практика заключается в replace скобок или substring такого вывода.

Вы можете переопределить метод toString ().

Пример набора:

 class SetPrinter<E> extends HashSet<E> { public SetPrinter(Set<E> set) { super(set); } @Override public String toString() { Iterator<E> i = iterator(); if (!i.hasNext()) { return ""; } StringBuilder sb = new StringBuilder(); for (; ; ) { E e = i.next(); sb.append(e == this ? "(this Collection)" : e); if (!i.hasNext()) return sb.toString(); sb.append(","); } } } 

Использование:

Новый SetPrinter (SetToPrint) .toString ();