【问题标题】:c# console type in capslock [duplicate]c#控制台输入大写锁定[重复]
【发布时间】:2018-11-26 14:28:35
【问题描述】:

我想创建一个小“终端”游戏,其中所有内容都是大写的。 但是当你用console readline输入的时候,输入的不是全大写,我还没找到解决办法。

所以如果我输入“login”,我希望控制台实时输入“LOGIN”。

目前,我的代码如下所示:

static void Main(string[] args)
    {
        slowType("TERMINALTEST V1.0 CORP", 50, 100);
        Console.WriteLine();
        slowType(">", 50, 100);
        string temp = Console.ReadLine();
    }

    static void slowType(string input, int minvelo, int maxvelo)
    {
        Random temp = new Random();
        for (int i = 0; i < input.Length; i++)
        {
            Console.Write(input[i]);
            Thread.Sleep(temp.Next(minvelo, maxvelo));
        }
    }

我想替换

string temp = Console.ReadLine();

string temp = MethodForTypingUppercase();

【问题讨论】:

    标签: c# console uppercase


    【解决方案1】:

    这将每次取每个字符 1,如果按 enter 则退出,否则我们将其大写,抑制原始字符,然后写入大写版本。

    static void Main(string[] args)
    {
        string test = GetCapitalizedInput();
        Console.WriteLine("Captured: " + test);
        Console.ReadLine();
    }
    
    static string GetCapitalizedInput()
    {
        string input = "";
        while (true)
        {
            var keypress = Console.ReadKey(true); // suppress original output
            if (keypress.Key == ConsoleKey.Enter)
            {
                break;
            }
            string uppercased = keypress.KeyChar.ToString().ToUpper();
            input += uppercased;
            Console.Write(uppercased);
        }
        return input;
    }
    

    【讨论】:

    • 您应该使用Console.ReadKey(true),而不是退格按键,这样输入的字符就不会出现。
    • var keypress = Console.ReadKey(true);
    • 已编辑:看起来确实好一点
    猜你喜欢
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多