Java 是否从设置为textview的列表中删除方括号[]?

Java 是否从设置为textview的列表中删除方括号[]?,java,android,Java,Android,我正在使用jsoup使用以下代码解析内容 try{ Elements divElements = jsDoc.getElementsByTag("div"); for(Element divElement : divElements){ if(divElement.attr("class").equals("article-content")){ textList.add(divElement.text()); text = textList

我正在使用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();
与:


是的,这是因为名单。您必须选择以下选项:
子类化TextList,并重写toString() 或


使用迭代和
StringBuffer
实现您自己的方法来创建所需的
字符串。
替换
括号或
子字符串
这样的输出不是一个好的做法。

对于大多数对象,
toString()
方法不用于显示,但通常用于调试。这是因为
toString()
方法通常没有特定的格式,并且可能根据所使用的特定类而有所不同。例如,LinkedList和ArrayList可以从
toString()
返回不同的值。这不太可能,但这是你应该避免依赖的东西。当然,如果对象表示实际文本(
String
StringBuilder
CharSequence
),则上述内容不适用

此外,您还在for循环中多次创建和分配字符串。相反,您应该只在for循环完成后创建字符串

要创建字符串,您可以自己滚动或使用类似的库,该库具有
StringUtils.join()
utility方法

如果您自己滚动,它可能看起来像这样:

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();
Elements-divElements=jsDoc.getElementsByTag(“div”);
迭代器迭代器=divElements.Iterator();
StringBuilder=新的StringBuilder();
while(iterator.hasNext()){
Element divElement=iterator.next()
如果(divElement.attr(“类”)等于(“文章内容”)){
append(divElement.text());
if(iterator.hasNext()){
生成器。追加(“,”);
}
}
}
text=builder.toString();
您可以重写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(",");
        }
    }
}
class SetPrinter扩展了HashSet{
公用设置打印机(一套){
超级(套);
}
@凌驾
公共字符串toString(){
迭代器i=迭代器();
如果(!i.hasNext()){
返回“”;
}
StringBuilder sb=新的StringBuilder();
对于(;;){
E=i.next();
附加(e==这个?”(这个集合):e);
如果(!i.hasNext())
使某人返回字符串();
某人加上(“,”);
}
}
}
使用:


新的SetPrinter(SetToPrint).toString()

使用正则表达式替换前后方括号,String.replace()不适用于列表内容包含方括号的边缘情况

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

像这样简单地使用。它对我有用

Text(text.toString().replaceAll('[', "").replaceAll(']', ''));

如果textlist的真实内容中有括号,那么它将不起作用。我想问题很清楚,用户需要从数组中删除括号。toString()输出,您的解决方案将替换转换字符串中的所有“[”和“]”accross,即使它将是真实内容的一部分。正确答案!这似乎应该是对的。。。但这对我不起作用
String text = textList.toString().replaceAll("(^\\[|\\]$)", "");
Text(text.toString().replaceAll('[', "").replaceAll(']', ''));