-1

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

1 に答える 1