删除部分String Android

时间:2016-10-19 11:23:54

标签: android string

在我的应用程序中,我从RSS fedd项目(标签描述)中获取了一个字符串并将其放在ListView中,但String看起来像这样:

enter image description here

我尝试使用此方法删除标记但不起作用:

var object = {
    name: "venu",
    id: 99,
    age: 100,
    "x": [
        "balaji",
        22,
        11
    ],
    "y": {
        name: "balu",
        id: 55,
        age: 22
    }
};

var g = object.x;
for (var i = 0; i < g.length; i++) {
    for (var k = 0; k < g[i].y.length; k++) {
        console.log(g[i].y.name);
    }
}

4 个答案:

答案 0 :(得分:3)

最好不要删除HTML代码,但要正确渲染它们。

textView.setText(Html.fromHtml(sourceString));

答案 1 :(得分:0)

为什么不直接使用String中的replace()?

https://www.tutorialspoint.com/java/java_string_replace.htm

答案 2 :(得分:0)

如果要正确渲染HTML,可以使用

Spanned parsedHtmlString = Html.fromHtml(htmlString)

instaed如果渲染html可能会导致一些布局问题,你可以用它来删除html标签

Spanned strippedHtmlString = Html.fromHtml(htmlString).toString()

请记住,从Android N开始不推荐使用这些metdods,所以你需要使用类似的东西来编译API 24 +

Spanned result;

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
    result = Html.fromHtml(htmlString, Html.FROM_HTML_MODE_LEGACY); //add .toString() to remove html tags
} else {
    result = Html.fromHtml(htmlString); //add .toString() to remove html tags
}

取自here

修改 根据你的评论,我认为你应该这样做:

public RssItem(Parcel source) { 
    Bundle data = source.readBundle();
    title = Html.fromHtml(data.getString("title")).toString(); 
    link = Html.fromHtml(data.getString("link")).toString(); 
    pubDate = (Date) data.getSerializable("pubDate"); 
    description = Html.fromHtml(data.getString("description")).toString(); 
    content = Html.fromHtml(data.getString("content")).toString(); 
    feed = data.getParcelable("feed"); 
}

我省略了一些对象,因为它实际上取决于它们包含的内容。 此外,在使用Html.fromHtml

解析它们之前,您应该检查null

答案 3 :(得分:0)

您可以使用Jsoup删除html标记。

private String refactor(String html) {
    return Jsoup.parse(html).text();
}