我的任务是计算输入中感知字符的数量.输入是一组 int(我们可以将其视为一个int[]),表示Unicode代码点.
不允许使用java.text.BreakIterator.getCharacterInstance().(我的意思是他们的公式是允许的并且是我想要的,但是编织它们的源代码和状态表让我无处可去>.<)
我想知道在给定一些代码点的情况下,计算字形集群数量的正确算法是什么?
最初,我认为我所要做的就是结合所有出现的:
U+0300 – U+036F (结合变音符号)
U+1DC0 – U+1DFF (结合变音符号补充)
U+20D0 – U+20FF (结合符号的变音符号)
U+FE20 - U+FE2F (结合半分)
进入以前的非变音符号.
但是我意识到在该操作之前,我必须首先删除所有非字符.
这包括:
U+FDD0 - U+FDEF
每个平面的最后两个代码点
但似乎还有更多事情要做.Unicode.org指出我们需要包括U+200C(零宽度非连接器)和U+200D(零宽度连接器)作为连续字符集(源)的一部分.
除此之外,它还讨论了更多的事情,但整个主题都以抽象的方式处理.例如,什么是对的代码点范围间距组合标记,韩文字符JAMO形成韩文音节?
有没有人知道在给定int[]代码点的情况下计算字素集群数量的正确算法?
我想知道如何String array使用 kotlin转换一个字符串或一个字符串对象。
我做了一些研究,发现这个 JAVA 代码似乎可以满足我的需求。
public static void main(String[] args) {
String word="abc";
String[] array = new String[word.length()];
for(int i = 0; i < word.length(); i++)
{
array[i] = String.valueOf(word.charAt(i));
}
for(String a:array){
System.out.println(a);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望在 Kotlin 中有这样或比它更好的东西。
提前致谢。