对于我正在进行的当前编程项目,我需要能够将包含非ASCII变音符号的单词(如'ä','ö'或'ü'转换为包含Unicode(\u00F6
)的单词/字符串。< / p>
为实现这一目标,我想尝试'新'Java Streams。 到目前为止,我能够获得不适合默认ASCII字符集的所有字符索引,因此需要替换。
public static void replaceUmlauts() {
char[] chars = "persönlich".toCharArray();
int[] ind = IntStream.range(0, chars.length).filter(i -> chars[i] > 128).toArray();
}
然而,我并没有真正找到一种方法来很好地用它们各自的Unicode表示替换已识别索引处的变音符号。为了保持一种范式,我想找到一个Stream解决方案,但我也愿意接受其他有效的解决方案来解决问题。
同样完全不同 - 甚至更简单的方法 - 对整个问题都会非常感激。
答案 0 :(得分:0)
一个简单的解决方案是
String in = "persönlich";
StringBuilder out = new StringBuilder();
for (int i = 0; i < in.length(); i++) {
char ch = in.charAt(i);
out.append(ch <= 127 ? ch : "\\u" + String.format("%04x", (int)ch));
}
或者如果你想“流水化”:
String text = "persönlich";
StringBuilder result = new StringBuilder();
text.chars().forEachOrdered(c -> result.append(c < 128 ? (char) c : String.format("\\u%04X", c)));
System.out.println(result);