Nice implementation. Just a note, the substring check and dropping characters by character length might cause problems in other language text since unlike English, multiple characters are combined to form a single letter in some languages.
We can use BreakIterator (https://developer.android.com/reference/java/text/BreakIterator) to determine this.