gpt4 book ai didi

java - 动态迭代 unicode 字符

转载 作者:行者123 更新时间:2023-11-30 00:50:01 25 4
gpt4 key购买 nike

我正在 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 与 cycle 的大小相同,并且在运行时,每个值都等于零。当您输入一个句子时,它会查找循环中的任何匹配项(如果字母是英语或阿姆哈拉语,它应该会找到)。当它找到匹配项时,它会转到 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);
}

但是,执行“(char)i”会将其转换为不包括阿姆哈拉语字符的 ASCII 字符。那么有没有一种方法,而不是循环遍历 ASCII,循环遍历 unicode 字符并将它们添加到循环中?任何帮助将不胜感激。

最佳答案

U+1200 到 U+137F 范围内的 Unicode 涵盖埃塞俄比亚语和阿姆哈拉语,因此它存在于 BMP(基本多语言平面)中,可以用 16 位值表示。

doing "(char)i" converts it to an ASCII character [???]

错了。与其他一些语言不同,Java 中的 char 有 2 个字节大,因此足以满足您的目的。

有关详细信息,请参阅:Comparing a char to a code-point?

关于java - 动态迭代 unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41209884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com