没关系? :d
我有一个API PHP,它接收用字符串[tag]标签替换的html文本,我的Android应用程序需要用Spannable字符串替换这个文本标签。
我在将[strong]
,[br]
,[p]
,[i]
替换为SpannableString
的字符串标记时遇到问题,并且会对内容文本进行归档。
并非所有文字都被正确覆盖。例如,某些[强]标签仍然存在,有时文本会重复,而不是重叠。
我的活动收到:
...
SpannableStringBuilder parseContent = new StringTagParserHelper(tagPost.getContent())
.addMultipleStyle();
contentView.setText(parseContent);
My String parser classe是:
public class StringTagParserHelper {
private static String rawText;
private SpannableStringBuilder spannableContent;
public StringTagParserHelper(String text) {
rawText = text;
}
/**
* @return
*/
public SpannableStringBuilder addMultipleStyle() {
spannableContent = new SpannableStringBuilder(rawText);
cleanTags("strong");
return spannableContent;
}
private void cleanTags(String tag) {
Pattern pattern = Pattern.compile(tag + "\\](.+?)\\[/" + tag);
Matcher matcher = pattern.matcher(rawText);
while (matcher.find()) {
Log.d("PARSE", String.valueOf(matcher.group(1)));
String _internal = matcher.group(1);
int start = matcher.start();
int end = matcher.end();
if (tag.equals("strong")) {
Spannable spanText = new SpannableString(_internal);
spanText.setSpan(
new StyleSpan(Typeface.BOLD), 0, _internal.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
);
spannableContent.replace(start, end, spanText);
}
if (tag.equals("br")) {
//
}
}
}
[编辑]
添加了2个屏幕截图。
spanText
_internal
字符串。 Log.d()
行接收没有标签的原始字符串文本列表。
Log.d("PARSE", String.valueOf(matcher.group(1)));
请帮帮我,伙计们!
参考文献:
Android TextView format multiple words
https://stackoverflow.com/a/6560685/3332734