C#代码实现在控制台输入密码显示星号
在控制台输入的内容C#默认按照字符串进行处理,如果直接让用户一次输入完毕就很难实现 显示星号的功能。但是如果让用户一次只能输入一个字符就,在将用户输入的字符替换为星号就可以实现了!
首先,C#中能让用户按下一个按键的方法就是Console.Readkey(),用户一次只能按下一个按键,其中它的另外一个重载方法是Console.ReadKey(bool b),bool类型的参数用来控制是否在控制台上显示用户按下的按键。那么我们可以传入true参数,使用户按下的按键不显示在控制台上,这样光标始终停留在原来的位置,然后在该位置打印一个*号即可实现。同时此方法的返回值为ConsoleKeyInfo类型。通过查MSND得知ConsoleKeyInfo类型是描述按下的控制台键,包括控制台键表示的字符以及 Shift、Alt 和 Ctrl 修改键的状态。此类型数据类型是结构体类型,其中有两个重要的属性Key和KeyChar。其中的Key对应用于按下的某个按键,是枚举类型,KeyChar是用户按下按键对应的Unicode编码字符。那么这样我就就能拿到用户输入的字符串和用户按下的按键。用户输入密码是一个循环的过程,当用户按下按键输入密码时候设置不显示字符,然后在相同位置打印一个*号,最后判断用户是否按下了回车键,这样就结束了整个密码输入过程。具体代码如下
//控制台输入密码显示星号
//定义一个字符串接收用户输入的内容
string input = null;
Console.WriteLine("请输入密码");
while (true)
{
//存储用户输入的按键,并且在输入的位置不显示字符
ConsoleKeyInfo ck = Console.ReadKey(true);
//判断用户是否按下的Enter键
if (ck.Key != ConsoleKey.Enter)
{
if (ck.Key != ConsoleKey.Backspace)
{
//将用户输入的字符存入字符串中
input += ck.KeyChar.ToString();
//将用户输入的字符替换为*
Console.Write("*");
}
else
{
//删除错误的字符
Console.Write("\b \b");
}
}
else
{
Console.WriteLine();
break;
}
}
Console.WriteLine("你刚才输入的是{0}", input);
Console.ReadKey();
最终实现效果如下

C#代码实现在控制台输入密码显示星号的更多相关文章
- VS2017 C/C++输入密码显示*星号
VS2017 C/C++输入密码显示*星号 _getch()函数使用时遇到的坑 参考: https://blog.csdn.net/guin_guo/article/details/46237905 ...
- Python之控制台输入密码的方法
一.raw_input()或input(): for python 2.x [root@master test]# /usr/local/python2.7/bin/python test.py Pl ...
- C#控制台输入密码星号显示
在Program类中的Main方法里: 1 public class Program 2 { 3 static void Main(string[] args) 4 { 5 Console.Write ...
- 一个只能用在Win下的密码验证函数(显示星号,可删除)
以前做小程序时图好玩在网上找的代码.输入的密码会以星号显示出来,并且输入错了可以删除.因为用了专有库函数,所以只能在Windows平台使用,少用为好,不过可能还有点用.嗯…就这样了 #include ...
- idea操作maven时控制台中文显示乱码/maven项目启动方式
在idea中通过maven启动项目时,在前台显示数据库信息,没有中文乱码问题,在控制台中mybatis显示数据库的信息,中文显示乱码. 在程序中用 System.out.println 输出中文的时候 ...
- c语言一个显示星号的函数(隐藏密码)
显示星号 void star(char p[]) //显示星号 { int j; while((p[j] = getch())!='\r') { if(p[j] !='\b') { pr ...
- IDEA修改显示星号*和热部署
IDEA修改显示*星号: IDEA热部署: 两步: 1. 2. Ctrl+Alt+Shift+/ 打开下面界面,选Registry 对于Springboot应用,可能无法启动,在上述两步不起作用的情况 ...
- log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息
log4j 配置,tomcat 启动或有后台操作时,控制台会显示很多 DEBUG 信息 日志信息可以以文件形式显示,也可以在控制台输出,在 log4j.properties 文件设置. 控制台有很多 ...
- 三行代码实现.NET MVC统计显示页面的执行时间 超简单的实现方法 分析页面执行效率
三行代码实现.NET MVC统计显示页面的执行时间 超简单的实现方法 分析页面执行效率 博客页脚处添加了页面执行时间统计显示,如下图所示,也可以直接查看网页页脚处. 实现方法非常简单,只需三行代 ...
随机推荐
- webpack处理url资源的配置
webpack处理url资源的配置 1.安装 npm i url-loader -D 2.修改webpack.config.js const path = require('path'); // 启用 ...
- Spring Boot的Servlet简单使用
当使用spring-Boot时,嵌入式Servlet容器通过扫描注解的方式注册Servlet.Filter和Servlet规范的所有监听器(如HttpSessionListener监听器). Spri ...
- Postman—前置请求脚本
前言 在前面的文章中已经说到了,在Postman中可以编写以下两种脚本: 前置请求脚本 测试脚本 这两种脚本的运行时机都不一样,在上一篇<Postman—脚本介绍>中已经详细的进行了介绍. ...
- 以整体思维看问题:解决单页应用,系统角色请求覆盖身份唯一标识(本项目中是session_id命名的)发送请求问题
以前都是开始一段废话的,现在直接进入主题,首先介绍一下一些概念: 单页应用: 优点: 具有桌面应用的即时性.网站的可移植性和可访问性. 用户体验好.快,内容的改变不需要重新加载整个页面,web应用更具 ...
- docker 创建基础镜像
docker 安装卸妆官方说明: https://docs.docker.com/install/linux/docker-ee/centos/#os-requirements 本系列基于cento ...
- Servlet多文件上传方法
1. 通过getInputStream()取得上传文件. 001 /** 002 * To change this template, choose Tools | Templates 003 * ...
- 关于EF Unit of Work Repository的简单用法
其实ef本身就是unit of work+repository的 其中继承自DbContext的类就是unit of work context中的DbSet<T>属性就是repositor ...
- Hive配置文件hive-site.xml
<configuration> <property> <name>hive.metastore.warehouse.dir</name> <val ...
- Win10+Ubuntu双系统安装
笔者使用的是华硕FX50J装的双系统,之前使用过Dell的游闸安装过,但是没有碰到那么多问题.所以觉得有必要记录下.安装双系统之前,电脑先安装了win10(win10也崩过几次).下面开始安装双系统步 ...
- spring cloud 服务发现
Eureka 当注册中心使用. 注: 1.当仅有一台Eureka时,不需要向别的节点注册. 2.集群的时候,需要相互注册. 工作方式: 前提: Eureka //注册中心 provide1 / ...