Мое приложение - словарь арабский c. У меня есть следующий TextView
<TextView
android:id="@+id/txtArInf"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:gravity="center"
android:textColor="@color/primaryText"
android:textIsSelectable="true"
android:textSize="34sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="إِتْيَانٌ" />
и метод выделения результатов поиска:
private fun highlightArabicQuery(resources: Resources, spannable: Spannable, query: Pattern) {
val matcher = query.matcher(spannable)
val color = resources.getColor(R.color.background_match_highlight)
while (matcher.find()) {
spannable.setSpan(
BackgroundColorSpan(color),
matcher.start(),
matcher.end(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
}
}
Я получаю неожиданные разрывы строк в некоторых словах, которые выглядят следующим образом.
Шаблон регулярного выражения в приведенном выше примере равен ن[\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\u0653\u0670]*ص[\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\u0653\u0670]*ر[\u064b\u064c\u064d\u064e\u064f\u0650\u0651\u0652\u0653\u0670]*
(символы Unicode в скобках обозначаются арабскими c диакритическими знаками)