gpt4 book ai didi

java - 替换字符串中的\a25之类的字符串

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:53 27 4
gpt4 key购买 nike

我有一个文本,里面有一些特殊字符,例如:

Nur bei guter \U25berwachung k\o25rperliche Belastung pr\u25fen und Sie entsprechend

我有一个表格,可以将这些映射到德语变音符号;编码为十六进制 unicode 字母。我试图在文本中替换它们,但我失败了......

对于\U25,所需的输出是 Ü,对于\025 是 ö,对于\u25 是 ü

我试过很多东西,举个例子

Pattern p = Pattern.compile("(\\\\[0-9A-Za-z]{3})", Pattern.MULTILINE);
Matcher matcher = p.matcher(v);
String replacement = "00FB";
while (matcher.find()) {
String match = matcher.group();
int hexToInt = Integer.parseInt(replacement, 16);
v = matcher.replaceFirst("" + hexToInt);
}

使用最后一行 v = matcher.replaceFirst(match, "Ü"); 使我的程序永远挂起。我也尝试了 str.replace() 方法,没有用......

部分人物:

enter image description here

enter image description here

最佳答案

据我所知,这种编码不是标准编码。你可以像这样“巧妙地”实现它:

private static Map<String, String> CONVERSIONS = new HashMap<String, String>() {{
put("\\U25", "Ü");
put("\\o25", "ö");
put("\\u25", "ü");
}};

private static String convert(String str) {
for (Map.Entry<String, String> conversion : CONVERSIONS.entrySet()) {
str = str.replace(conversion.getKey(), conversion.getValue());
}
return str;
}

请注意,您不应使用基于正则表达式的 replaceAll() - 只需使用纯文本匹配 replace() 方法(它仍然会替换所有出现的地方) .

然后简单地使用:

String str = convert("Nur bei guter \\U25berwachung k\\o25rperliche Belastung pr\\u25fen und Sie entsprechend");
System.out.println(str);

输出:

Nur bei guter Überwachung körperliche Belastung prüfen und Sie entsprechend

我使用了 map 的在线初始化,但您可以通过读取属性或 csv 或类似文件轻松调整 map 的初始化,这将使整个事情变得非常容易管理。

关于java - 替换字符串中的\a25之类的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37617494/

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