【问题标题】:Android : Remove last paragraph tag generated by Html.toHtmlAndroid:删除由 Html.toHtml 生成的最后一个段落标签
【发布时间】:2014-07-04 03:32:30
【问题描述】:

我正在编辑 EditText 中可能是 html 的内容。在保存结果之前,我使用 Html.toHtml 将输入转换为要发送到服务器的字符串。但是,此方法调用似乎正在生成我不需要的段落标签。例如-

Test edited
seems to get converted to 
<p dir="ltr">Test edited</p>

我想在保存内容之前去掉最后一个段落标签。如果还有其他段落标签,我想保留它们。我有这个匹配所有 p 标签的正则表达式

"(<p.*>)(.*)(</p>)";

但我不确定如何只匹配最后一段并删除它的标签。

【问题讨论】:

标签: android regex


【解决方案1】:
public static void handleOneParagraph(SpannableStringBuilder text) {
   int start = 0;
   int end = text.length();
   String chars1 = "<p";

   if (end < 2)
   return;

    while (start < end  ) {
        String seq = text.toString().substring(start, start + 2);
        if (seq.equalsIgnoreCase(chars1))
            break;

        start++;
    }

    if (text.toString().substring(start, start + 2).equalsIgnoreCase(chars1) ) {

        int start2 = start + 1;
        String chars2 = ">";
        while (start2 < end && !text.subSequence(start2, start2+1).toString().equalsIgnoreCase(chars2) ) {
            start2++;
        }

        if (start2 >= end)
            return;

        text.replace(start, start2+1, "");

        end = text.length();

        start = end;


        String chars3 = "</p>";
        while (start > start2 + 4) {
            String last_p = text.subSequence(start - 4, start).toString();
            if (last_p.equalsIgnoreCase(chars3) ) {
                text.replace(start - 4, start, "");
                break;
            }
            start--;
        }

    }

}

现在,你可以像这样使用它...

SpannableStringBuilder cleaned_text = new SpannableStringBuilder(Html.toHtml(your_text));
handleOneParagraph(cleaned_text);

【讨论】:

    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 2014-10-04
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多