gpt4 book ai didi

java - 如何在java中翻译带有不可打印字符的字符串

转载 作者:行者123 更新时间:2023-11-30 04:33:24 25 4
gpt4 key购买 nike

我想在java编程中将带有不可打印字符(反斜杠、左箭头、右箭头等)的字符串转换为可打印字符串。

For example -

input string = "rn -r\b\b\b\b -r[K\b\b\bm -r\b\b\b"

byte array of input string = [114, 110, 32, 45, 114, 8, 8, 8, 8, 32, 45, 114, 27, 91, 75, 8, 8, 8, 109, 32, 45, 114, 8, 8, 8]

output string should be = "rm -r"

如何将此字符串转换为可打印字符串?

最佳答案

如果您的意思是删除不可打印的字符

System.out.println("rn -r\b\b\b\b -r[K\b\b\bm -r\b\b\b".replaceAll("\\P{Print}", ""));

输出

rn -r -r[Km -r

更新

此版本保留了光标并支持退格键、左箭头和右箭头

    String s = "rn -r\b\b\b\b -r[K\b\b\bm -r\b\b\b";
StringBuilder sb = new StringBuilder();
int cursor = 0;
for (char c : s.toCharArray()) {
if (c == '\b') {
if (cursor > 0) {
sb.deleteCharAt(--cursor);
}
} else if (c == 37) { // left arrow
if (cursor > 0) {
cursor--;
}
} else if (c == 39) { // right arrow
if (cursor < sb.length()) {
cursor++;
}
} else if (!Character.isISOControl(c)) {
sb.insert(cursor++, c);
}
}
System.out.println(sb);

打印r -m

这与你的rm -r不同,但我认为我的是正确的

关于java - 如何在java中翻译带有不可打印字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14049726/

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