C# :: Aufgabe #138 :: Lösung #1

6 Lösungen Lösungen öffentlich
#138

Console - ReadPassword Methode

Anfänger - C# von DrizZle - 15.06.2016 um 13:48 Uhr
Ihr kennt sicherlich die Einstellung für die TextBox in der Windows Form in der man den User Input sofort in ein belibigen Password Char umwandeln kann (in der Regel '*'). Diese Möglichkeit hat man in der Console nicht. Die Aufgabe besteht darin jeden Tastaturschlag des Users abzufangen und in ein '*' umzuwandeln und auszugeben. Sprich ihr erstellt eure eigene Read Methode. Das Passwort soll später trotz allem als Text ausgegeben werden können.
Vorlage:
Quellcode ausblenden C#-Code
class ReadPass
{
    static void main(string[] args)
	{
	    Console.Write("Passwort: ");
	    string password = ReadPassword();
	}
	string ReadPassword()
	{
	    ...
	}
}
#1
vote_ok
von daniel59 (4260 Punkte) - 21.07.2016 um 15:42 Uhr
Quellcode ausblenden C#-Code
using System;

namespace ConsoleReadPassword
{
    class Program
    {
        static void Main(string[] args)
        {
            string write = "Passwort: ";
            Console.Write(write);
            string password = ReadPassword(write);
            Console.WriteLine(password);
            Console.ReadLine();
        }

        static string ReadPassword(string lineBegin = "", char passwordChar = '*')
        {
            string line = null;
            while (true)
            {
                ConsoleKeyInfo key = Console.ReadKey();
                if (key.KeyChar == '\r' || key.KeyChar == '\n')
                {
                    Console.WriteLine();
                    return line;
                }
                else if (key.KeyChar == '\b')
                {
                    if (line.Length > 0)
                    { line = line.Substring(0, line.Length - 1); Console.Write('\0'); }
                }
                else if (key.KeyChar != '\0')
                {
                    line += key.KeyChar;
                }
                Console.Write('\r');
                Console.Write(lineBegin);
                Console.Write(new string(passwordChar, line.Length));
            }
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben