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

时间:2011-09-24 00:32:49

标签: 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.toString();
     }
 }
}
catch(Exception e){

System.out.println("Couldnt get content");
       }

唯一的问题是内容会在它周围用括号返回[]。

我猜这是因为我设定的列表。我怎样才能删除这些?

7 个答案:

答案 0 :(得分:24)

替换:

text = textList.toString();

使用:

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:2)

是的,因为List。你必须选择:
Subclass TextList是什么,并覆盖toString() 或

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

答案 3 :(得分:1)

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

此外,您正在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();

答案 4 :(得分:0)

使用迭代和String实现您自己的方法来创建所需的StringBufferreplace括号或substring这样的输出不是一个好习惯。

答案 5 :(得分:0)

您可以覆盖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(",");
        }
    }
}

使用:

new SetPrinter(SetToPrint).toString();

答案 6 :(得分:0)

就这么简单地使用。它对我有用。

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