Outlook日历同步安卓本地日历后,日程描述转HTML格式问题求助
解决安卓Cursor获取Outlook同步日程描述的HTML转纯文本问题
Outlook同步安卓本地日历时,哪怕创建事件时输入的是纯文本,它也会自动把描述包装成简单HTML格式(比如套个<p>标签)。要拿到原始纯文本,直接用这两种实用方法就行:
方法一:用Android自带Html类解析
Android系统自带的Html类能直接解析HTML内容并提取纯文本,兼容性稳定:
// 从Cursor中取出HTML格式的日程描述 String htmlDesc = cursor.getString(cursor.getColumnIndex(Events.DESCRIPTION)); // 解析为纯文本,Android N及以上需指定模式 String plainText = Html.fromHtml(htmlDesc, Html.FROM_HTML_MODE_LEGACY).toString().trim();
这个方法会自动处理标签、换行等格式,还原最接近原始输入的文本内容。
方法二:正则表达式直接移除HTML标签
如果Outlook生成的HTML结构很简单(只有基础标签),用正则替换更直接高效:
String htmlDesc = cursor.getString(cursor.getColumnIndex(Events.DESCRIPTION)); // 移除所有HTML标签 String plainText = htmlDesc.replaceAll("<[^>]+>", "").trim();
注:如果遇到复杂嵌套HTML,正则可能有遗漏,但Outlook同步的纯文本转HTML一般都是简单结构,完全够用。
额外优化:按需转换
为避免对原本就是纯文本的日程做多余处理,可以先判断内容是否为HTML格式:
String desc = cursor.getString(cursor.getColumnIndex(Events.DESCRIPTION)); String plainText; if (desc != null && desc.startsWith("<")) { // 是HTML格式才进行转换 plainText = Html.fromHtml(desc, Html.FROM_HTML_MODE_LEGACY).toString().trim(); } else { plainText = desc; }
内容的提问来源于stack exchange,提问作者Bhargav
相关产品推荐
相关产品推荐

