Java 字符串文本规范器复制韩文字符

我有一个字符串字符更改项目。当我将以下代码与韩文字符一起使用时,结果字符串具有重复字符。我该如何解决?


@Test

public void testKoreanCharacters() {

    String test = "카디코이";

    String replacedStr = Normalizer.normalize(test, Normalizer.Form.NFD).replaceAll("\\p{Mn}", "");

    Assert.assertEquals(test.length(),replacedStr.length());

}

输出:


java.lang.AssertionError: 

Expected :4

Actual   :8


慕斯王
浏览 71回答 1
1回答

德玛西亚99

日语字符代表音节,而不是单音。因此,大多数字符代表两个或三个“拉丁”字符。1 Introduction请参阅Unicode Norma 部分的第一个黄色块Unicode 标准定义了字符之间的两种等价:规范等价和兼容性等价。规范等价是字符或字符序列之间的基本等价。下图说明了这种等效性:因此,将一个字符变成两个字符是正确的行为。但是,您选择了 NFD 形式,它已经是“规范分解”。我认为你不必删除\\p{Mn},因为你根本没有得到规范的组成。NFC 规范分解,然后是规范组合。NFD 规范分解。NFKC 兼容性分解,然后是规范组合。NFKD 兼容性分解。您的测试假设不正确,输入和输出序列的长度不必相同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java