gpt4 book ai didi

Java字符串文本规范化重复韩文字符

转载 作者:行者123 更新时间:2023-11-30 05:35:27 24 4
gpt4 key购买 nike

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

@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

最佳答案

日语字符代表音节,而不是单个语音。因此,大多数字符代表两个或三个“拉丁”字符。请参阅 Unicode Norma 的 1 简介 部分的第一个黄色 block

The Unicode Standard defines two equivalences between characters: canonical equivalence and compatibility equivalence. Canonical equivalence is a basic equivalency between characters or sequences of characters. The following figure illustrates this equivalence:

enter image description here

因此,将两个字符合而为一是正确的行为。

但是,您选择了 NFD 形式,它已经表示“规范分解”。我认为您不必删除 \\p{Mn},因为您根本没有得到规范的组合。

NFC Canonical decomposition, followed by canonical composition.

NFD Canonical decomposition.

NFKC Compatibility decomposition, followed by canonical composition.

NFKD Compatibility decomposition.

您的测试假设不正确,输入和输出序列的长度不需要相同。

关于Java字符串文本规范化重复韩文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56735430/

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