java - 删除 Java String 的格式,同时保留重音字符

标签 java string unicode-string

如何删除 Java 字符串中的格式,同时保留重音字符?

请参阅下面的示例。我的目标是获取 öwnNämé@gmail.com(请注意 𝗴𝗺𝗮𝗶𝗹.𝗰𝗼𝗺 如何更改为 gmail.com)

String formattedStr = "öwnNämé@𝗴𝗺𝗮𝗶𝗹.𝗰𝗼𝗺";
for(int i=0; i < formattedStr.length(); i++) {
   System.out.print(formattedStr.charAt(i));
}

这是上面的输出。 (奇怪的是,如果我使用 print 而不是 println,它打印得很好)

ö
w
n
N
ä
m
é
@
?
?
?
?
?
?
?
?
?
?
.
?
?
?
?
?
?

如果我使用 Integer.toHexString(formattedStr.codePointAt(i)) 而不是 formattedStr.charAt(i),这就是输出

f6
77
6e
4e
e4
6d
e9
40
1d5f4
ddf4
1d5fa
ddfa
1d5ee
ddee
1d5f6
ddf6
1d5f9
ddf9
2e
1d5f0
ddf0
1d5fc
ddfc
1d5fa
ddfa

最佳答案

您可以使用 Normalizer.Form.NFKC 来解决您的问题:

String response = Normalizer.normalize(formattedStr, Normalizer.Form.NFKC);

这将返回一个不带粗体字符的字符串,并将打印出来。

ö
w
n
N
ä
m
é
@
g
m
a
i
l
.
c
o
m

关于java - 删除 Java String 的格式,同时保留重音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65325621/

相关文章:

java - 为什么我的 java String 的长度比它生成的 byte[] 数组短?

c++ - 如何从 Little-Endian UTF-16 编码字节中获取 C++ std::string

java - Spring MVC 模型不知道我的类

java - 有没有办法在 Eclipse Project Explorer 的 Maven 依赖项中获取版本信息而不是 "(without test code)"?

java - 如何将现有的 Java 项目添加到 Git 存储库

java - 如何打印带有零填充的字符串?

Python 将字符串转换为字节

c - 使用 "while"打印字符数组

Java Unicode 字符串排序

java - 如何使用 BorderLayout 将两个组件放入 JPanel?