日常開發(fā)過程中,驗(yàn)證字符的合法性一直是一個(gè)必不可少的步驟,以前都是在用戶輸入完再做判斷,不僅麻煩在不符合標(biāo)準(zhǔn)的時(shí)候還要提示用戶修改,體驗(yàn)很差,為什么不在輸入的時(shí)候加以限制呢?
以 Winform
的TextBox
控件為例,這里提供兩種方案:
- 通過字符匹配
- 正則表達(dá)式
在用戶輸入時(shí)限制,所以選用KeyPress
事件。
字符匹配
private void txt_Address_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
// 只允許輸入字母和數(shù)字
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;
}
}
以上代碼使用了TextBox
的KeyPress
事件處理程序。在該事件中,使用char.IsLetterOrDigit
方法來判斷輸入的字符是否是字母或數(shù)字,如果不是,則將其處理掉,不允許輸入。同時(shí),使用char.IsControl
方法來判斷輸入的字符是否是控制字符,如退格鍵、刪除鍵等,這些特殊按鍵是允許輸入的。另外,使用TextBox
的Text
屬性來獲取輸入框中的文本長度,如果長度超過 8 位并且輸入的字符不是控制字符,也將其處理掉,不允許輸入超過 8 位的字符。
測試過程中發(fā)現(xiàn)這樣判斷有一個(gè)缺陷就是中文還是能輸進(jìn)去??
正則表達(dá)式
private void txt_Address_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
// 使用正則表達(dá)式定義允許輸入的字符模式
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;
}
}
在上面的代碼中,我們使用了正則表達(dá)式 [a-zA-Z0-9]
來定義了允許輸入的字符模式,表示只允許輸入字母(包括大小寫)和數(shù)字字符。通過Regex.IsMatch
方法來判斷輸入的字符是否符合這個(gè)字符模式,如果不符合并且也不是控制字符(如Backspace
、Delete
等),則通過e.Handled = true
來禁止輸入。
這樣,用戶在輸入時(shí)如果嘗試輸入空格、中文或其他不符合字符模式的字符,將會(huì)被禁止輸入。就不用每次都判斷啦??,記得提前引用需要的命名空間哈。文章來源:http://www.zghlxwxcb.cn/news/detail-412130.html
using System.Text.RegularExpressions;
每天一個(gè)偷懶小技巧是??文章來源地址http://www.zghlxwxcb.cn/news/detail-412130.html
到了這里,關(guān)于C# 限制輸入為字母或數(shù)字以及長度的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!