我试图更改这些字符RecursionError
之间的字符串颜色,但我的代码出了问题。申请结束了。
每一个" nota"包含* *
(即"*"
)的内容应更改其余字词的颜色" good"并删除This is * good *
个字符
"*"
更新:
我尝试了这段代码,但它部分地将单词着色(不是我想要的特定单词):
if(nota != null){
if(nota.contains("* *")){
nota = nota.replace("* *","");
Spannable spannable = new SpannableString(nota);
spannable.setSpan(new ForegroundColorSpan(Color.YELLOW), nota.indexOf("* *"), nota.indexOf("* *") + "* *".length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
txtnota.setText(spannable);
}
}
答案 0 :(得分:0)
正如我所看到的,你首先删除“*”字符,然后你调用indexOf那个字符,但你不再拥有它,所以你得到负面结果。设置范围后移动替换指令。并且您不应该检查“* *”但是首先出现“*”,而不是设置跨度,然后删除“*”的两个出现。或者你可以保留索引。以下是代码示例:
if(nota != null){
int firstIndex = nota.indexOf("*");
if (firstIndex >= 0) {
nota = nota.replaceFirst("[*]{1}", "");
int secIndex = nota.indexOf("*");
if (secIndex >= 0) {
nota = nota.replaceFirst("[*]{1}", "");
Spannable spannable = new SpannableString(nota);
spannable.setSpan(new ForegroundColorSpan(Color.YELLOW), firstIndex, secIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
txtnota.setText(spannable);
}
}
}