【发布时间】:2017-02-21 17:14:32
【问题描述】:
我有以下代码,我将在其中用SpannableString 标记大括号之间的内容并删除大括号,但它给出了错误的结果。
String text = "the {quic}k brown {fox} jumps {over} the lazy dog. {A Quick} {brow}nfoxjumpsoverthelazydog";
tv.setText(makeSpannable(text, "\\{.*?\\}"));
public SpannableStringBuilder makeSpannable(String text, String regex) {
SpannableStringBuilder spannable = new SpannableStringBuilder(text);
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(spannable.toString());
while (matcher.find()) {
String word = matcher.group();
String abbr = word.toString().substring(1, word.length() - 1);
spannable.setSpan(new ForegroundColorSpan(Color.RED), matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannable.replace(matcher.start(), matcher.start() + abbr.length() , abbr);
}
return spannable;
}
输入:
the {quic}k brown {fox} jumps {over} the lazy dog. {A Quick} {brow}nfoxjumpsoverthelazydog
【问题讨论】:
标签: java android regex spannablestring spannablestringbuilder