gpt4 book ai didi

java - 将 Unicode 转义符替换为相应的字符

转载 作者:行者123 更新时间:2023-12-01 07:51:07 25 4
gpt4 key购买 nike

我正在尝试将代码点(例如 \u00FC)转换为其代表的字符。

import javax.swing.JOptionPane;

public class Test {
public static void main(String[] args) {
String in = JOptionPane.showInputDialog("Write something in here");
System.out.println("Input: " + in);
// Do something before this line
String out = in;
System.out.print("And Now: " + out);
}
}

一个解释我的意思的例子:

第一行控制台:输入:Hall\u00F6

第二行控制台:现在:Hallö

编辑:因为有时在 The Trombone Willy 的答案中它不适用于多个 Unicode,这里是修复的代码:

public static String unescapeUnicode(String s) {
StringBuilder r = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (s.length() >= i + 6 && s.substring(i, i + 2).equals("\\u")) {
r.append(Character.toChars(Integer.parseInt(s.substring(i + 2, i + 6), 16)));
i += 5;
} else {
r.append(s.charAt(i));
}
}
return r.toString();
}

最佳答案

Joao 的答案可能是最简单的,但是当您不想下载 apache jar 时,无论是出于空间原因、可移植性原因,还是您只是不想弄乱许可证或其他原因,此功能都可以提供帮助。 Apache 克鲁夫特。另外,由于它没有太多功能,我认为它应该更快。这是:

public static String unescapeUnicode(String s) {
StringBuilder sb = new StringBuilder();

int oldIndex = 0;

for (int i = 0; i + 2 < s.length(); i++) {
if (s.substring(i, i + 2).equals("\\u")) {
sb.append(s.substring(oldIndex, i));
int codePoint = Integer.parseInt(s.substring(i + 2, i + 6), 16);
sb.append(Character.toChars(codePoint));

i += 5;
oldIndex = i + 1;
}
}

sb.append(s.substring(oldIndex, s.length()));

return sb.toString();
}

我希望这有帮助! (你不必为此归功于我,我将其归于公共(public)领域)

关于java - 将 Unicode 转义符替换为相应的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37502058/

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