使用SpannableString突出显示字符串中的多个单词

时间:2012-11-12 04:20:42

标签: android underline spannablestring

我正在使用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);
}

0 个答案:

没有答案