【问题标题】:How to remove char '*' from Console Window? Command Console.Write("\b"); didn't work如何从控制台窗口中删除 char '*'?命令 Console.Write("\b");没用
【发布时间】:2013-12-05 19:38:45
【问题描述】:

这是 contains from 方法,它写入隐藏的字母。当我按下退格键时,我需要以某种方式从控制台中删除 char *。

    private static string Password()
    {
        bool enter=true;
        string pass="";
        do
        {

            char letter = Console.ReadKey(true).KeyChar;
            if (letter == (char)13)
            { enter = false; }
            else if (letter == (char)8 && pass.Length >= 1)
            {
                pass = pass.Remove(pass.Length - 1);
                Console.Write("\b");
            }
            else
            {
                pass += letter;
                Console.Write("*");
            }
        } while (enter);
        Console.WriteLine();
        return pass;
    }

我搜索了一个答案,但命令 Console.Write("\b");但它似乎无法正常工作。

【问题讨论】:

  • 你要什么?您的代码输出“*”。您是否要在显示后将其删除? Windows 不是 Unix。

标签: c# string console char


【解决方案1】:

您可以将光标的位置设置回一个,写入一个空字符,然后再次将其移回。像这样:

private static string Password()
{
    bool enter = true;
    string pass = "";
    do
    {
        char letter = Console.ReadKey(true).KeyChar;
        if (letter == (char)13)
        { enter = false; }
        else if (letter == (char)8 && pass.Length >= 1)
        {
            pass = pass.Remove(pass.Length - 1);
            Console.CursorLeft--;
            Console.Write('\0');
            Console.CursorLeft--;
        }
        //Additionally, don't print backspaces if it's the first character.
        else if (letter != (char)8)
        {
            pass += letter;
            Console.Write("*");
        }
    } while (enter);
    Console.WriteLine();
    return pass;
}

【讨论】:

    【解决方案2】:

    试试这个:

    Console.Write("\b \b");
    

    【讨论】:

      猜你喜欢
      • 2014-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 2011-03-29
      • 2022-08-22
      • 1970-01-01
      • 2016-05-09
      相关资源
      最近更新 更多