如何动态加粗(跨度)字符串中的搜索文本?
How to Bold (Span) the searched text in string dynamically?
我有一个字符串,我必须在其中找到一个从最终用户那里搜索的词,并将其加粗以突出显示。
示例:
字符串:地址必须有格式。地址可以是多行。
要求文本:地址 必须有格式。 地址可以是多行。
在经历了不同的方法之后。我已经编写了以下方法,它将跨越字符串中搜索到的文本。
如果您想多次跨越同一文本,他们也可以使用此方法。
public CharSequence highlightTextString(String completeText, String searchText) {
String temp = completeText.toLowerCase();
SpannableStringBuilder highlightText = new SpannableStringBuilder(completeText);
Pattern pattern = Pattern.compile(searchText.toLowerCase());
Matcher matcher = pattern.matcher(temp);
while (matcher.find()) {
StyleSpan styleSpan = new StyleSpan(android.graphics.Typeface.BOLD);
highlightText.setSpan(styleSpan, matcher.start(), matcher.end(), 0);
}
return highlightText;
}
我有一个字符串,我必须在其中找到一个从最终用户那里搜索的词,并将其加粗以突出显示。
示例:
字符串:地址必须有格式。地址可以是多行。
要求文本:地址 必须有格式。 地址可以是多行。
在经历了不同的方法之后。我已经编写了以下方法,它将跨越字符串中搜索到的文本。
如果您想多次跨越同一文本,他们也可以使用此方法。
public CharSequence highlightTextString(String completeText, String searchText) {
String temp = completeText.toLowerCase();
SpannableStringBuilder highlightText = new SpannableStringBuilder(completeText);
Pattern pattern = Pattern.compile(searchText.toLowerCase());
Matcher matcher = pattern.matcher(temp);
while (matcher.find()) {
StyleSpan styleSpan = new StyleSpan(android.graphics.Typeface.BOLD);
highlightText.setSpan(styleSpan, matcher.start(), matcher.end(), 0);
}
return highlightText;
}