我正在编辑EditText中可能是html的内容。在保存结果之前,我使用Html.toHtml将输入转换为要发送到服务器的字符串。但是这个方法调用似乎生成了我不需要的段落标记。例如 -
Test edited
seems to get converted to
<p dir="ltr">Test edited</p>
我想在保存内容之前删除最后一个段落标记。如果还有其他段落标签,我想保留这些标签。我有这个匹配所有p标签的正则表达式
"(<p.*>)(.*)(</p>)";
但我不确定如何只匹配最后一个段落,只删除它的标签。
答案 0 :(得分: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);