C# 限制输入为字母或数字以及长度

这篇具有很好参考价值的文章主要介绍了C# 限制输入为字母或数字以及长度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

日常开发过程中,验证字符的合法性一直是一个必不可少的步骤,以前都是在用户输入完再做判断,不仅麻烦在不符合标准的时候还要提示用户修改,体验很差,为什么不在输入的时候加以限制呢?

WinformTextBox控件为例,这里提供两种方案:

  • 通过字符匹配
  • 正则表达式

在用户输入时限制,所以选用KeyPress事件。

字符匹配

private void txt_Address_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
  // 只允许输入字母和数字
  if (!char.IsLetterOrDigit(e.KeyChar) && !char.IsControl(e.KeyChar) && e.KeyChar != '\b')
  {
    e.Handled = true;
  }

  // 限制输入长度为8位
  if (txt_Address.Text.Length >= 8 && !char.IsControl(e.KeyChar))
  {
    e.Handled = true;
  }
}

以上代码使用了TextBoxKeyPress事件处理程序。在该事件中,使用char.IsLetterOrDigit方法来判断输入的字符是否是字母或数字,如果不是,则将其处理掉,不允许输入。同时,使用char.IsControl方法来判断输入的字符是否是控制字符,如退格键、删除键等,这些特殊按键是允许输入的。另外,使用TextBoxText属性来获取输入框中的文本长度,如果长度超过 8 位并且输入的字符不是控制字符,也将其处理掉,不允许输入超过 8 位的字符。

测试过程中发现这样判断有一个缺陷就是中文还是能输进去🙄

正则表达式

private void txt_Address_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
  // 使用正则表达式定义允许输入的字符模式
  string pattern = @"[a-zA-Z0-9]";
  Regex regex = new Regex(pattern);

  // 判断输入的字符是否符合允许的字符模式
  if (!regex.IsMatch(e.KeyChar.ToString()) && !char.IsControl(e.KeyChar))
  {
    // 如果输入的字符不符合字符模式,并且不是控制字符(如Backspace、Delete等),则禁止输入
    e.Handled = true;
  }

  // 限制输入长度为8位
  if (txt_Address.Text.Length >= 8 && !char.IsControl(e.KeyChar))
  {
    e.Handled = true;
  }
}

在上面的代码中,我们使用了正则表达式 [a-zA-Z0-9] 来定义了允许输入的字符模式,表示只允许输入字母(包括大小写)和数字字符。通过Regex.IsMatch方法来判断输入的字符是否符合这个字符模式,如果不符合并且也不是控制字符(如BackspaceDelete等),则通过e.Handled = true来禁止输入。

这样,用户在输入时如果尝试输入空格、中文或其他不符合字符模式的字符,将会被禁止输入。就不用每次都判断啦🐰,记得提前引用需要的命名空间哈。

using System.Text.RegularExpressions;

每天一个偷懒小技巧是👣文章来源地址https://www.toymoban.com/news/detail-412130.html

到了这里,关于C# 限制输入为字母或数字以及长度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包