【问题标题】:Remove part of String Android [duplicate]删除部分字符串 Android [重复]
【发布时间】:2017-03-01 00:23:00
【问题描述】:

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

我尝试用这种方法去除标签,但不起作用:

private String refactor(String mess) {
        int indexToRemove = mess.lastIndexOf("<strong>");
        String toBeReplaced = mess;
        if(indexToRemove >= 0 ){
             toBeReplaced = mess.substring(0, indexToRemove);
        }
        int newIndex = toBeReplaced.lastIndexOf("</strong>");
        String messFinal = toBeReplaced;
        if(newIndex >= 0){
            messFinal = toBeReplaced.substring(0, newIndex);
        }
        return messFinal;
    }

【问题讨论】:

  • 你的意思是“”标签?
  • ”标签是

标签: android string


【解决方案1】:

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

Spanned parsedHtmlString = Html.fromHtml(htmlString)

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

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

请记住,这些方法从 Android N 开始已被弃用,因此您需要使用类似这样的东西来使用 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 进行一些检查

【讨论】:

  • 我从 rss fedd 获取项目
  • 我用这个方法得到 rss fedd 项目 public RssItem(Parcel source) { Bundle data = source.readBundle();标题 = data.getString("标题");链接 = data.getString("链接"); pubDate = (日期) data.getSerializable("pubDate");描述 = data.getString("描述");内容 = data.getString("内容"); feed = data.getParcelable("feed");和'在这里我必须使用方法 Html.fromHtml?
  • @Marduk 我已经更新了上面的答案
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    最好不要删除HTML标签,而是正确渲染它们。

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

    【讨论】:

    • 喜欢这个描述 = Html.toHtml(Html.fromHtml(data.getString("description")));?
    • descriptionTextView.setText(Html.fromHtml(data.getString("description"));
    【解决方案4】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-26
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 2014-07-24
      • 2013-08-30
      • 1970-01-01
      • 2017-07-02
      相关资源
      最近更新 更多