gpt4 book ai didi

java - 在不改变字符串长度的情况下将 Unicode 转换为 ASCII(在 Java 中)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:04:46 24 4
gpt4 key购买 nike

在不改变字符串长度的情况下将字符串从 Unicode 转换为 ASCII 的最佳方法是什么(这对我来说非常重要)?此外,没有任何转换问题的字符必须与原始字符串中的位置相同。因此,“Ä”必须转换为“A”,而不是具有更多字符的神秘内容。

编辑:
@novalis - 此类符号(例如亚洲语言的符号)应该只转换为一些占位符。我对这些词或它们的意思不太感兴趣。

@MtnViewMark - 在任何情况下我都必须保留所有字符的数量和 ASCII 可用字符的位置。

这里有更多信息:我有一些只能处理 ASCII 字符串的文本挖掘工具。大多数应处理的文本是英文的,但有些确实包含非 ASCII 字符。我对那些词不感兴趣,但我必须确保我感兴趣的词(那些只包含 ASCII 字符的词)在字符串转换后处于相同的位置。

最佳答案

this 中所述回答,下面的代码应该可以工作:

    String s = "口水雞 hello Ä";

String s1 = Normalizer.normalize(s, Normalizer.Form.NFKD);
String regex = "[\\p{InCombiningDiacriticalMarks}\\p{IsLm}\\p{IsSk}]+";

String s2 = new String(s1.replaceAll(regex, "").getBytes("ascii"), "ascii");

System.out.println(s2);
System.out.println(s.length() == s2.length());

输出是

??? hello A
true

所以你先去掉变音符号,然后转换成ascii。非 ascii 字符将变成问号。

关于java - 在不改变字符串长度的情况下将 Unicode 转换为 ASCII(在 Java 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2096667/

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