在 Visual Basic.NET 里,Line Input
语句会在控制台显示用户输入的字符。要是你不想让输入的字符显示出来,例如在输入密码这种需要保密的场景下,可以使用 Console.ReadKey
方法来实现这个需求。下面为你介绍几种实现方式:
1. 使用 Console.ReadKey(True)
方法(回显星号)
这种方法会隐藏用户输入的字符,并且用星号(*
)来替代显示,这样用户能知道自己输入了多少个字符。
Sub Main()
Console.Write("请输入密码: ")
Dim password As String = ""
Dim key As ConsoleKeyInfo
' 循环读取按键,直到用户按下 Enter 键
Do
key = Console.ReadKey(True) ' True 参数表示不显示输入的字符
' 处理退格键
If key.Key = ConsoleKey.Backspace AndAlso password.Length > 0 Then
password = password.Substring(0, password.Length - 1)
Console.Write(vbBack + " " + vbBack) ' 清除显示的星号
ElseIf key.Key <> ConsoleKey.Enter Then
password += key.KeyChar
Console.Write("*") ' 显示星号替代实际字符
End If
Loop Until key.Key = ConsoleKey.Enter
Console.WriteLine() ' 换行
Console.WriteLine($"你输入的密码是: {password}")
End Sub
2. 使用 Console.ReadKey(True)
方法(完全隐藏输入)
这种方法会完全隐藏用户输入的字符,控制台不会显示任何内容。
Sub Main()
Console.Write("请输入密码: ")
Dim password As String = ""
Dim key As ConsoleKeyInfo
' 循环读取按键,直到用户按下 Enter 键
Do
key = Console.ReadKey(True) ' True 参数表示不显示输入的字符
' 处理退格键
If key.Key = ConsoleKey.Backspace AndAlso password.Length > 0 Then
password = password.Substring(0, password.Length - 1)
ElseIf key.Key <> ConsoleKey.Enter Then
password += key.KeyChar
End If
Loop Until key.Key = ConsoleKey.Enter
Console.WriteLine() ' 换行
Console.WriteLine($"你输入的密码是: {password}")
End Sub
3. 创建一个通用的输入函数
为了提高代码的复用性,你可以创建一个通用的函数来处理隐藏输入的操作。
vbnet
Module Module1
Sub Main()
Dim password As String = ReadPassword("请输入密码: ")
Console.WriteLine($"你输入的密码是: {password}")
End Sub
Function ReadPassword(prompt As String) As String
Console.Write(prompt)
Dim password As String = ""
Dim key As ConsoleKeyInfo
Do
key = Console.ReadKey(True)
If key.Key = ConsoleKey.Backspace AndAlso password.Length > 0 Then
password = password.Substring(0, password.Length - 1)
Console.Write(vbBack + " " + vbBack)
ElseIf key.Key <> ConsoleKey.Enter Then
password += key.KeyChar
Console.Write("*")
End If
Loop Until key.Key = ConsoleKey.Enter
Console.WriteLine()
Return password
End Function
End Module
代码说明:
Console.ReadKey(True)
:这个方法会读取用户按下的按键,True
参数的作用是让按键不显示在控制台上。- 处理退格键:在代码中,我们对退格键进行了特殊处理,这样用户就可以删除输入错误的字符。
- 显示星号:当用户输入字符时,控制台会显示星号(
*
),让用户能直观地知道自己输入了多少个字符。 - 循环读取:程序会不断循环读取按键,直到用户按下
Enter
键才会结束输入。
通过使用这些方法,你就能在控制台应用程序中实现隐藏用户输入字符的功能了。