当前位置: 首页 > java >正文

字符输入验证函数

背景:
查找输入的字符串是否符合要求,通常用于限制用户在编辑框(如 CEdit)中只能输入特定格式的数据,例如数字、小数、时间格式等
主要变量说明:
**m_nDecialNum:**一个成员变量,表示允许的小数点后数字的位数(如设为2,则小数最多有两位小数)。
**m_bMinus:**一个成员变量,表示是否允许输入负号(负数)。
**GetSel(nStart, nEnd):**获取当前选中的文本范围。
**GetWindowText(strContent):**获取当前编辑框的内容。

bool IsValidChar(UINT nChar)
{bool bValid = true; // 假设输入字符有效// 检查输入字符是否为数字、小数点、冒号,或者特殊按键(左箭头、退格、右箭头、删除键)if ((nChar >= _T('0') && nChar <= _T('9')) || nChar == _T('.') || nChar == _T(':') || nChar == VK_LEFT || nChar == VK_BACK || nChar == VK_RIGHT || nChar == VK_DELETE){// 如果输入字符是小数点且当前小数点个数为0,则不允许输入小数点,即只能输入数字if (nChar == _T('.') && m_nDecialNum == 0){return false;}int nStart = 0, nEnd = 0;GetSel(nStart, nEnd); // 获取当前选中文本的起始和结束位置CString strContent;GetWindowText(strContent); // 获取当前控件文本内容// 如果有文本被选中,则清空文本if ((nEnd - nStart) != 0){strContent = _T("");}// 查找小数点的位置int DecimalPoint = strContent.Find(_T('.'));if (DecimalPoint != -1) // 如果找到了小数点{if (nChar == _T('.')) // 如果输入字符是小数点,则无效{bValid = false;}else{// 获取小数点后的数字部分CString strDecimal = strContent.Right(strContent.GetLength() - DecimalPoint - 1);// 如果小数部分的长度已经达到了设置的小数位数限制,则除了特殊按键外的输入字符均无效if (strDecimal.GetLength() >= m_nDecialNum){if (!(nChar == VK_LEFT || nChar == VK_RIGHT || nChar == VK_BACK || nChar == VK_DELETE)){bValid = false;}}}}// 如果没有找到小数点,则继续处理else{// 这里可以添加一些额外的逻辑}}else // 如果输入字符不是数字、小数点、冒号或特殊按键{CString strContent;GetWindowText(strContent); // 获取当前控件文本内容// 如果允许输入负号,并且输入字符是负号,并且当前文本中不包含负号,则认为输入有效if (m_bMinus && (nChar == _T('-')) && (-1 == strContent.Find(_T("-")))){bValid = true;}else // 否则,输入无效{bValid = false;}}return bValid; // 返回输入字符是否有效的结果
}
http://www.xdnf.cn/news/732.html

相关文章:

  • PI0 Openpi 部署(仅测试虚拟环境)
  • 百望山游记,佘太君庙,杨家将的故事
  • 【HDFS入门】HDFS故障排查与案例分析:从日志分析到实战解决
  • Linux 进程控制(自用)
  • centos停服 迁移centos7.3系统到新搭建的openEuler
  • 2025年人工智能指数报告:技术突破与社会变革的全景透视
  • 2022 CCF CSP-S2.策略游戏
  • Transformer系列(一):NLP中放弃使用循环神经网络架构
  • xss4之cookie操作
  • SpringBoot Actuator指标收集:Micrometer与Prometheus集成
  • 【网络篇】从零写UDP客户端/服务器:回显程序源码解析
  • 基于kubernetes1.23.17容器化部署RuoYi全栈项目手册
  • AI与思维模型【69】——人类误判心理
  • 计算机视觉与深度学习 | TensorFlow基本概念与应用场景:MNIST 手写数字识别(附代码)
  • 洛谷题目:P7775 [COCI 2009/2010 #2] VUK 题解 (本题简)
  • 雨滴传感器详解(STM32)
  • spring事务
  • C++ 模块化编程(Modules)在大规模系统中的实践难点
  • Spring Boot 集成 Kafka 及实战技巧总结
  • 计算机视觉cv入门之Haarcascade的基本使用方法(人脸识别为例)
  • 内存管理详解(曼波脑图超详细版!)
  • 物联网技术赋能:复杂环境下的能源数据零丢失
  • 【小沐杂货铺】基于Three.JS绘制卫星轨迹Satellite(GIS 、WebGL、vue、react,提供全部源代码)
  • LeetCode 每日一题 2563. 统计公平数对的数目
  • Apache Parquet 文件组织结构
  • Redis 哨兵与集群脑裂问题详解及解决方案
  • 声音识别(声纹识别)和语音识别的区别
  • Linux 下依赖库的问题
  • (4)Vue的生命周期详细过程
  • 力扣每日一题781题解-算法:贪心,数学公式 - 数据结构:哈希