【发布时间】:2013-04-29 05:06:31
【问题描述】:
我正在用 Java 编写一个基本的 telnet 服务器,我想处理由 '\b' 表示的退格终端控制字符。 退格字符删除/移除字符串中的前一个字符。
我目前正在使用下面的示例方法来成功实现这一点,但有人知道更清洁/更有效的方法吗?
非常感谢您提供的任何帮助。
/*
Example input:
"This is a dog\b\b\bcat"
"\b\b\bThis is x\b a cat"
"\b\b\bThis\b\b\bThis is a dog\b\b\bcat"
*/
private String processBackspace(String input)
{
StringBuilder output = new StringBuilder();
int backSpaceCount = 0, index = 0;
boolean isBackSpace = false;
for (int i = input.length() - 1; i >= 0; i--)
{
char c = input.charAt(i);
if (c == '\b')
{
isBackSpace = true;
backSpaceCount++;
}
else
isBackSpace = false;
if (!isBackSpace)
{
index = i - backSpaceCount;
if (index >= 0)
output.append(input.charAt(index));
}
}
output.reverse();
return output.toString();
}
【问题讨论】:
-
代码审查问题并不真正符合 Stack Overflow 问题的标准。也许你应该试试codereview.stackexchange.com?我已投票以“离题”结束。
标签: java string telnet control-characters