gpt4 book ai didi

java - 如何将 unicode 符号映射到 Java 中等效的更简单的拉丁脚本

转载 作者:行者123 更新时间:2023-11-30 03:44:29 25 4
gpt4 key购买 nike

我想尽可能将图形/符号字符映射到更简单的 Java 替代方案,例如:

  • U1E36 拉丁文大写字母 l,下面带点 -> L
  • U25B6 黑色右指三角形 ->>
  • U25C0 黑色左指三角形 -> <
  • U25B2 黑色向上三角形 -> ^

我的问题是我不知道所有字符是什么,因此尽管从技术上来说映射上面的特定字符很容易,但很难对每个字符进行映射,可能有数百个。

我已经有了这个用于删除重音等的代码

public static final Pattern DIACRITICS_AND_FRIENDS
= Pattern.compile("[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+");


private static String stripDiacritics(String str) {
str = Normalizer.normalize(str, Normalizer.Form.NFD);
str = DIACRITICS_AND_FRIENDS.matcher(str).replaceAll("");
return str;
}

所以我想知道是否有类似的东西可以帮助我处理这些符号字符,请注意,我不想删除它们,只是用更简单的表示替换。

最佳答案

您想要做的事情无法以通用方式完成,因为 unicode 标准并不总是指定每个字符的“更简单”形式,并且在许多情况下尝试甚至没有意义。

如果您查看类似 LATIN SMALL LETTER U WITH DIAERESIS 的页面您将看到标准实际上为给定字符指定了哪些信息。 (仅查看​​标记为 Unicode 数据 的 block 。)

请注意,分解为不同的 unicode 序列,但是字符可以表示为 \u00fc\u0075\u0308。您可以机械地将第一个实例转换为第二个实例,然后删除所有组合标记,但是......

现在看看类似 CYRILLIC SMALL LETTER DZE 的内容你会发现,虽然它是用或多或少与 S 类似的东西打印的,但它实际上是一个完全不同的字母。事实上,它发出的声音是/dz/

如果您真的真的想要这样做,那么您必须完全编写一个库,其中的数据库包含每个字符的映射。有些(如上面的第一个示例)可以半自动执行,但其他示例(如第二个示例)没有真正清晰的映射。

关于java - 如何将 unicode 符号映射到 Java 中等效的更简单的拉丁脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26082622/

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