|
|
1
205
How do I remove diacritics (accents) from a string in .NET? 此方法在java中运行良好 (纯粹为了去除变音标记或重音) . 它基本上将所有重音字符转换为非重音字符,然后再转换为组合变音符号。现在您可以使用正则表达式去除变音符号。
|
|
2
72
这是我们的一部分 Apache Commons Lang
返回
也看到 http://www.drillio.com/en/software-development/java/removing-accents-diacritics-in-any-language/ |
|
|
3
19
首先,你需要了解你正在尝试做的事情的局限性。正如其他人所指出的,变音符号的存在是有原因的:它们本质上是该语言字母表中唯一的字母,具有自己的意义/声音等:删除这些标记与替换英语单词中的随机字母一样。这是在你甚至去考虑西里尔语言和其他基于脚本的文本,如阿拉伯语,它不能简单地“转换”为英语。 如果你 必须 ,无论出于何种原因,转换字符,那么唯一明智的方法是首先减少手头任务的范围。考虑输入的来源——如果你正在为“西方世界”编写一个应用程序(作为任何一个好短语),你就不太可能需要分析阿拉伯语字符。类似地,Unicode字符集包含数百个数学和图形符号:用户无法(轻松)直接输入这些符号,因此您可以假设可以忽略它们。
这来自于开发应用程序的经验,该应用程序需要允许最终用户搜索包含变音字符的书目数据。查找数组(在我们的例子中)大约花了1个人天的时间来制作,以覆盖所有西欧语言的所有发音符号。 |
|
|
4
16
由于将“家族”转换为“táy”的编码实际上是随机的,并且不遵循任何可以用所涉及的Unicode码点信息解释的算法,因此没有通用的方法从算法上解决这个问题。 您需要将Unicode字符映射为类似的拉丁字符。您可能可以通过对表示Unicode代码点的实际标志符号进行智能机器学习来实现这一点。但我认为这方面的努力要比手动构建映射更大。特别是如果您有大量的示例可以用来构建映射。 澄清一下:一些替换实际上可以通过Unicode数据解决(如其他答案所示),但一些字母与它们相似的拉丁字符没有合理的关联。 示例:
|
|
|
5
11
测试的字符串:
最后一个选择是最好的。 |
|
|
6
7
原来的要求已经得到答复。 然而,我为那些可能正在寻找通用音译代码的人发布以下答案,以便在Java中将任何字符集音译为拉丁语/英语。 翻译的朴素含义: 如果我们想将任何字符集音译为拉丁语(英语字母),那么ICU4(java中的ICU4J库)将完成这项工作。
|
|
|
7
6
如果需要将“Oesoc”转换为“Oesoc”,您可以将其作为起点:
JDK1.6提供了可用于此任务的java.text.Normalizer类。 |
|
8
5
将任意Unicode“转换”为ASCII的问题在于字符的含义取决于区域性。例如,一个说德语的人应该转换成“ss”,而一个说英语的人可能会转换成B。 此外,Unicode对于相同的标志符号有多个代码点。
|
|
|
9
4
你可以尝试使用
|
|
|
10
4
没有简单或通用的方法来做你想做的事情,因为这只是你的主观意见,这些字母看起来像你想转换成的拉丁字母。它们实际上是独立的字母,有自己独特的名称和发音,只是表面上看起来像拉丁字母。 如果你想要转换,你必须根据你认为非拉丁字母应该转换成的拉丁字母创建你自己的翻译表。 How do I remove diacritics (accents) from a string in .NET? 但是,您描述了一个更一般的问题) |
|
|
11
4
我来晚了,但今天面对这个问题后,我发现这个答案非常好:
|
|
|
12
2
|
|
|
Boltu · pandas从url返回的值是什么? 2 年前 |
|
|
trystine · 试图运行CausalNex错误UnicodeEncodeError:“charmap”编解码器无法对位置263607-263621中的字符进行编码:字符映射到<undefined> 2 年前 |
|
|
Danny Coleiro · 向文本字符串添加不可见字符 2 年前 |