gpt4 book ai didi

java - 如何使控制字符可见?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:38 28 4
gpt4 key购买 nike

我必须显示带有可见控制字符的字符串,如 \n\t 等。我试过像 here 这样的引语,我也尝试过做类似的事情

Pattern pattern = Pattern.compile("\\p{Cntrl}");
Matcher matcher = pattern.matcher(str);
String controlChar = matcher.group();
String replace = "\\" + controlChar;
result = result.replace(controlChar, replace);

但是我失败了

最佳答案

备选方案:使用可见字符而不是转义序列。

要使控制字符“可见”,请使用 Unicode Control Pictures 中的字符 block ,即将\u0000-\u001F映射到\u2400-\u241F,和\u007F \u2421

请注意,这要求输出为 Unicode,例如UTF-8,而不是像 ISO-8859-1 这样的单字节代码页。

private static String showControlChars(String input) {
StringBuffer buf = new StringBuffer();
Matcher m = Pattern.compile("[\u0000-\u001F\u007F]").matcher(input);
while (m.find()) {
char c = m.group().charAt(0);
m.appendReplacement(buf, Character.toString(c == '\u007F' ? '\u2421' : (char) (c + 0x2400)));
if (c == '\n') // Let's preserve newlines
buf.append(System.lineSeparator());
}
return m.appendTail(buf).toString();
}

使用上述方法作为输入文本输出:

␉private static String showControlChars(String input) {␍␊
␉␉StringBuffer buf = new StringBuffer();␍␊
␉␉Matcher m = Pattern.compile("[\u0000-\u001F\u007F]").matcher(input);␍␊
␉␉while (m.find()) {␍␊
␉␉␉char c = m.group().charAt(0);␍␊
␉␉␉m.appendReplacement(buf, Character.toString(c == '\u007F' ? '\u2421' : (char) (c + 0x2400)));␍␊
␉␉␉if (c == '\n')␍␊
␉␉␉␉buf.append(System.lineSeparator());␍␊
␉␉}␍␊
␉␉return m.appendTail(buf).toString();␍␊
␉}␍␊

关于java - 如何使控制字符可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40892577/

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