You can use SpannableStringBuilder
and append parts of String
colorizing them when necessary. For example,
static CharSequence colorize(
String input, String open, String close, @ColorInt int color
) {
SpannableStringBuilder builder = new SpannableStringBuilder();
int openLen = open.length(), closeLen = close.length();
int openAt, contentAt, closeAt, last = 0;
while ((openAt = input.indexOf(open, last)) >= 0 &&
(closeAt = input
.indexOf(close, contentAt = openAt + openLen)) >= 0) {
int start = builder.append(input, last, openAt).length();
int len = builder.append(input, contentAt, closeAt).length();
builder.setSpan(
new ForegroundColorSpan(color),
start, len, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
);
last = closeAt + closeLen;
}
return builder.append(input, last, input.length());
}