Ariel Bogdziewicz
09/21/2020, 10:37 AMA: count = 1, utf16 = 1, unicode scalars = 1 -> ['A']
β¬: count = 1, utf16 = 1, unicode scalars = 1 -> ['β¬']
β: count = 1, utf16 = 1, unicode scalars = 1 -> ['β']
β³: count = 1, utf16 = 1, unicode scalars = 1 -> ['β³']
π©: count = 1, utf16 = 2, unicode scalars = 1 -> ['π©']
β€οΈ: count = 1, utf16 = 2, unicode scalars = 2 -> ['β€', 'οΈ']
π¨βπ©βπ§βπ¦: count = 1, utf16 = 11, unicode scalars = 7 -> ['π¨', 'β', 'π©', 'β', 'π§', 'β', 'π¦']
π©ββ€οΈβπβπ©: count = 1, utf16 = 11, unicode scalars = 8 -> ['π©', 'β', 'β€', 'οΈ', 'β', 'π', 'β', 'π©']
In swift itβs just text.count
and it returns number of characters like βπ¨βπ©βπ§βπ§β. I tried
@Test
public void printBreak() {
BreakIterator iterator = BreakIterator.getCharacterInstance();
String[] tests = {
"\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", // family icon π¨βπ©βπ§βπ§
"π©",
"β¬"
};
for (String test: tests) {
iterator.setText(test);
int index = iterator.first();
System.out.println("!!!! Start " + test);
while (index != BreakIterator.DONE) {
System.out.println(index);
index = iterator.next();
}
System.out.println("!!!! End " + test);
}
}
as article https://engineering.linecorp.com/en/blog/the-7-ways-of-counting-characters/ suggested but it also iterates over unicode scalars like
!!!! Start π¨βπ©βπ§βπ§
0
2
3
5
6
8
9
11
!!!! End π¨βπ©βπ§βπ§
Is it really so rocket science to iterate over multiple-characters in Android?gildor
09/21/2020, 11:35 AMAriel Bogdziewicz
09/21/2020, 11:42 AM"π¨βπ©βπ§βπ§".count = 1
Ariel Bogdziewicz
09/21/2020, 11:52 AM!!!! Start π¨βπ©βπ§βπ§
128104
8205
128105
8205
128103
8205
128103
!!!! End π¨βπ©βπ§βπ§
Mikael Alfredsson
09/21/2020, 12:57 PMBreakIterator
, do you use the one from java.text
or android.icu.text
, and do you test on a device, or just a local unit test on your machine?Mikael Alfredsson
09/21/2020, 1:01 PMjava.text
vs android.icu.text
doesnβt seem to matter, but running it on a device or locally might.Ariel Bogdziewicz
09/21/2020, 1:23 PMAriel Bogdziewicz
09/21/2020, 1:24 PMimport java.text.BreakIterator;
Mikael Alfredsson
09/21/2020, 1:25 PMAriel Bogdziewicz
09/21/2020, 1:26 PMAriel Bogdziewicz
09/21/2020, 1:26 PMjava.text
Β orΒ android.icu.text
should I import?Mikael Alfredsson
09/21/2020, 1:27 PMAriel Bogdziewicz
09/21/2020, 1:27 PMAriel Bogdziewicz
09/21/2020, 1:27 PMAriel Bogdziewicz
09/21/2020, 1:27 PMMikael Alfredsson
09/21/2020, 1:28 PMMikael Alfredsson
09/21/2020, 1:28 PMAriel Bogdziewicz
09/21/2020, 1:29 PMAriel Bogdziewicz
09/21/2020, 1:30 PMAriel Bogdziewicz
09/21/2020, 1:46 PMI/System.out: !!!!!!! BreakIterator
I/System.out: !!!! Start π¨βπ©βπ§βπ§
0
11
!!!! End π¨βπ©βπ§βπ§
Ariel Bogdziewicz
09/21/2020, 1:47 PMMikael Alfredsson
09/21/2020, 1:48 PMAriel Bogdziewicz
09/21/2020, 2:06 PMAriel Bogdziewicz
09/21/2020, 2:07 PMAriel Bogdziewicz
09/21/2020, 2:08 PMgildor
09/21/2020, 2:18 PM