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();
}