Java 是否从设置为textview的列表中删除方括号[]?
我正在使用jsoup使用以下代码解析内容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
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(']', ''));