Я очень плохо знаком с регулярными выражениями и манипуляциями с текстом, поэтому для многих это может быть тривиально, но для меня это довольно неприятно.
У меня есть такая строка:
* текст * текст текст текст * текст *
где текст ч / б * обозначает текст, который должен быть выделен жирным шрифтом
Таким образом, желаемый результат будет
текст текст текстовый текст текст
Я на полпути, используя следующий код
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
}
В настоящее время вывод
* текст * текст текст текст * текст * (* также выделены жирным шрифтом)
Я хочу удалить
Я собираюсь использовать
val spannableString = SpannableString(string.replace("*",""))
, чтобы удалить *, но после этого я не возможность настроить индексы, которые необходимо передать. Как это сделать? или есть лучший способ? Любая помощь с благодарностью