我正在使用SpannableString
来强调某些单词,但是,我意识到如果有多个单词,我只会突出显示第一个单词。不完全确定如何突出显示多个单词:
String keyword = "test";
String text = "This is a test to underline the three test words in this test";
SpannableString output = new SpannableString(text);
if (text.indexOf(keyword) > -1)
{
int keywordIndex = text.indexOf(keyword);
int keywordLength = keyword.length();
int start = keywordIndex;
int end = keywordIndex + (keywordLength);
output.setSpan(new UnderlineSpan(), start, end, 0);
}
我原以为我可以split
每个空间的文字并循环播放,但不确定是否有更好的方法。
我确实有这个代码使用正则表达式来突出显示多个单词,但是,我试图避免使用正则表达式,因为它在Android应用程序中并且我在ListView
中使用它并且我是告诉他们很贵。此代码我只突出显示整个单词,因此使用上面的示例文本,如果句子中出现“抗议”一词,则不会使用此代码突出显示:
Matcher matcher = Pattern.compile("\\b(?:test")\\b").matcher(text);
while (matcher.find())
{
output.setSpan(new UnderlineSpan(), matcher.start(), matcher.end(), 0);
}