Я работаю над созданием собственного MarkdownTextView.
В этом конкретном случае я просеиваю текст, анализируя пример тегов, выделенных курсивом:
Here is text, and *here is italic text*, and maybe *more* italic text
У меня есть функция регулярного выражения, которая выполняет отсеивание за меня:
(\*[^*])(.*?)([^*]\*)
Ниже приведен код, который я использую для замены всех фрагментов, выделенных курсивом:
val commentBody = "Here is text, and *here is italic text*, and maybe *more* italic text"
val check = "(\*[^*])(.*?)([^*]\*)".toRegex()
val newSpan = SpannableString(commentBody.replace(check, { result ->
val innerSpan = SpannableString(result.value.substring(1, result.value.length - 1))
innerSpan.setSpan(StyleSpan(Typeface.ITALIC), 0, innerSpan.length, spanFlag)
return@replace innerSpan
}))
Мое регулярное выражение работает правильно, и
Here is text, and *here is italic text*, and maybe *more* italic text
правильно преобразуется для отображения
Here is text, and here is italic text, and maybe more italic text
Но ничего не выделено курсивом. Я отладил это, и это подтверждает мои опасения, что при установке диапазона курсива внутри этого преобразования и использовании его для настройки моей новой расширяемой строки я теряю все эти диапазоны.
Любые идеи?