有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在使用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");
       }

唯一的问题是返回的内容周围有括号[],就像这样

我猜这是因为我设置的列表。我怎样才能去掉这些


共 (6) 个答案

  1. # 1 楼答案

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

    String text = textList.toString().replaceAll("(^\\[|\\]$)", "");
    
  2. # 2 楼答案

    替换:

    text = textList.toString();
    

    与:

    text = textList.toString().replace("[", "").replace("]", "");
    
  3. # 3 楼答案

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

    String temp = textList.toString();
    text = temp.subString(1, temp.size() -2);
    
  4. # 4 楼答案

    您可以重写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()

  5. # 5 楼答案

    对于大多数对象,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();
    
  6. # 6 楼答案

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