【发布时间】:2020-05-13 19:02:46
【问题描述】:
我对正则表达式和文本操作非常陌生,所以这对许多人来说可能是微不足道的,但对我来说却是相当麻烦的。
我有一个这样的字符串:
*文本*文本文本文本*文本*
其中的文本 b/w * 表示必须为粗体的文本
所以想要的输出是
文本文本文本文本文本
我使用以下代码已经完成了一半
val string = "*text* text text text *text*"
val pattern = Pattern.compile("\\*")
val matcher = pattern.matcher(string)
val spannableString = SpannableString(string)
var counter = 0
val indexes = IntArray(1)
while (matcher.find()) {
if(counter==0){
indexes[0]=matcher.start()
counter+=1
}else if(counter==1){
spannableString.setSpan(
StyleSpan(Typeface.BOLD),
indexes[0],matcher.start(),
Spannable.SPAN_INCLUSIVE_EXCLUSIVE)
counter+=1
}
if(counter==2){
counter=0
}
}
textView.text = spannableString
}
现在的输出是
*text* text text text *text*(*s 也是粗体)
我想删除 * 的
我打算使用
val spannableString = SpannableString(string.replace("*",""))
删除 * 之后,我无法调整需要传递的索引。我该怎么做?或者,还有更好的方法?非常感谢任何帮助
【问题讨论】:
标签: android regex textview spannablestring