我使用以下代码使用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");
}
唯一的问题是内容会在它周围用括号返回[]。
我猜这是因为我设定的列表。我怎样才能删除这些?
答案 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()
返回不同的值。它不太可能,但它应该避免依赖它。当然,如果对象代表实际文本(String
,StringBuilder
,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();
答案 4 :(得分:0)
使用迭代和String
实现您自己的方法来创建所需的StringBuffer
。 replace
括号或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(']', ''));