我正在Android Studio中编写一个可以计算句子每个字母出现次数的应用程序。例如:
// Input
String sentence = "abbdddd";
// Output
a:1; b:2; c:0; d:4; e:0; f:0; // And so on
但是,我也希望它能算上阿姆哈拉语字符,所以如果我输入:
String sentence = "abcሀሁሂ";
它会给我:
a:1; b:1; c:1 ... ሀ:1; ሁ:1; ሂ:1;
目前,我有两个ArrayLists,cycle和letterCount。循环具有所有可能的字符,输入句子的任何字母都可以。 letterCount与循环大小相同,并且在运行时,每个值都等于零。当你输入一个句子时,它会查找周期中的任何匹配(如果字母是英文或amharic,它应该找到)。当找到匹配项时,它将转到letterCount并将一个值添加到相应的值。因此,如果句子中的第一个字母是" a",那么它将转到letterCount的第一个值并添加一个。如果它是" c",那么它将转到letterCount的第三个值并添加一个。 cycle和letterCount中的值是使用for循环动态添加的:
for (int i = 97; i < 123; i++) {
char val = (char)i; // This is where the problem lies...I think
cycle.add(val);
letterCount.add(0);
}
然而,做&#34;(char)i&#34;将其转换为ASCII字符,该字符不包含阿姆哈拉字符。那么有没有办法,而不是循环通过ASCII,循环通过unicode字符并将它们添加到循环?任何帮助将不胜感激。
答案 0 :(得分:1)
U + 1200到U + 137F范围内的Unicode涵盖Ethiopic和Amharic,因此它存在于BMP(基本多语言平面)中,可以用16位值表示。
做“(char)i”将其转换为ASCII字符[???]
假。与其他一些语言不同,Java中的char大2字节,因此足以满足您的需要。
有关详细信息,请参阅:Comparing a char to a code-point?