Основан ли SpannableString.setSpan() на 2-й части 0?

#java #android #spanned

#java #Android #охватываемый

Вопрос:

Мой эмпирический эксперимент показывает, что если я setSpan(o, start, end) от начала до конца строки, где end находится String.length() - 1 , последний символ не покрывается.

Когда я изменил end на точно String.length() , вся строка была покрыта и… Я даже не получаю исключение «вне границ».

К сожалению, в документации ничего нет относительно этой конкретной проблемы.

Можете ли вы подтвердить мое наблюдение? (или докажите, что я неправ?)

Ответ №1:

end является эксклюзивным. 0, 2 , например, является ли все от 0 включительно до 2 эксклюзивным, что является 0 и 1 .

Комментарии:

1. Итак, если я правильно вас понимаю, для покрытия строки, длина которой составляет ровно 4 символа, start = 0 и end = 4?

Ответ №2:

На практике большинство «конечных» индексов будут эксклюзивными. То есть конечный индекс на единицу превышает индекс последнего чего бы то ни было. Если SpannableString используется в Android SDK, то нет, в документации это не указано для метода setSpan , хотя это указано для других методов, таких как subSequence .