Как вы можете видеть на изображении выше, у меня есть многострочный текст редактирования и текстовое представление счетчика слов в правом нижнем углу.
Я ожидаючто счетчик будет показывать число «7» в соответствии с количеством символов, введенных в тексте редактирования.Поэтому я хочу исключить пробел, а также пробел (enter, \ n) для подсчета в счетчике слов.
, но, к сожалению, я получаю «9» вместо «7».Вот код, который я использую:
class CreateEventDescriptionFragment : Fragment() {
lateinit var fragmentView : View
lateinit var inputEventDescriptionEditText : EditText
lateinit var wordsCounterTextView: TextView
lateinit var mContext : Context
lateinit var mActivity : FragmentActivity
override fun onAttach(context: Context) {
super.onAttach(context)
mContext = context
activity?.let { mActivity = it }
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
fragmentView = inflater.inflate(R.layout.fragment_create_event_description, container, false)
setUpViewsDeclaration()
setUpListeners()
return fragmentView
}
private fun setUpViewsDeclaration() {
inputEventDescriptionEditText = fragmentView.findViewById(R.id.editText_event_description_input)
wordsCounterTextView = fragmentView.findViewById(R.id.textView_words_counter_event_description)
}
private fun setUpListeners() {
inputEventDescriptionEditText.addTextChangedListener(object: TextWatcher {
override fun afterTextChanged(s: Editable?) {
setWordsCounter(s)
wordsCounterTextView.text = "$numberOfInputWords"
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
setWordsCounter(s)
wordsCounterTextView.text = "$numberOfInputWords"
}
})
}
private fun setWordsCounter(words: CharSequence?) {
val rawInputString = words.toString().trim()
val removedEmptyLineInputString = rawInputString.replace("(?m)^[ \t]*\r?\n", "")
val removedEmptySpaceInputString = removedEmptyLineInputString.replace(" ", "")
numberOfInputWords = removedEmptySpaceInputString.count()
}
}
Java в порядке.что здесь пошло не так?