C# 如何让textbox控件中只能输入4个汉字或者8个英文字母?

在此,我不得不补充一点:问题是:汉字4个,英文字母8个,不是只能输入汉字或者字母。我已经实现了只能输入汉字或者字母了,但是汉字和字母无法区分,就是说汉字也是字母...这是我的代码:

private void limit()
{
bool Ischar = false;
int temp = 0;
char[] crletter = {'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z','A','B','C','D',
'E','F','G','H','I','J','K','L','M','N',
'O','P','Q','R','S','T','U','V','W','X',
'Y','Z'};
char[] crtextbox = textBox1.Text.ToString().Trim().ToArray();

foreach(char ch in this.textBox1.Text)
{
if(IsLetter(ch))
{
Ischar = true;
}
else
{
Ischar = false;
}
}
for(int i=0;i<crletter.Length;i++)
{
for(int j=0;j<crtextbox.Length;j++)
{
if(crletter[i] == crtextbox[j])
{
temp++;
}
else
{
temp = 0;
}
}
}

if(Ischar == true && temp != 0)
{
textBox1.MaxLength = 8;
}
else if(Ischar == true && temp == 0)
{
textBox1.MaxLength = 4;
}
else
{
MessageBox.show("只能为字母或者汉字!");
}
}

但是,只要是汉字或者英文字母都是进入
if(crletter[i] == crtextbox[j])
{
temp++;
}
让temp不等于零,也就是说汉字和字母是一样的,这该怎么办呢?

那就是字符长度啊 判断的时候把汉字算2个字符
function StrLength(str) {
var i, sum;
sum = 0;
for (i = 0; i < str.length; i++) {
if ((str.charCodeAt(i) >= 0) && (str.charCodeAt(i) <= 255))
sum = sum + 1;
else {
sum = sum + 2;
}
}
return sum;
}

这是js判断的
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-06
那2个汉字,4个字母行不行呢?追问

行啊,当然,有代码吗?

追答

你的逻辑是 字母+汉字,长度不超过8?
是必须8吗,还是 0~8 啊?

追问

逻辑是这样子的:纯汉字4个,纯字母8个;汉字要是有1个,则可以有6个字母;汉字有2个则可以有4个字母;汉字有3个则可以有2个字母;就是说一个汉字顶2个字母。

追答

清楚了,这个需求,使用正则表达式来解决,比较简单高效的,我写给你
-------------------------------------------
int txtLength = System.Text.Encoding.Default.GetByteCount(this.textBox1.Text);
if (txtLength != 8)
{
MessageBox.Show("内容长度不符合");
return;
}

string txtPattern = "^[a-zA-Z\u4e00-\u9fa5]+$";
if (!System.Text.RegularExpressions.Regex.IsMatch(this.textBox1.Text, txtPattern))
{
MessageBox.Show("只能输入字母和汉字");
return;
}

MessageBox.Show("符合要求");

本回答被提问者采纳
第2个回答  2012-09-06
使用定则表达式,具体自己查看
第3个回答  2012-09-06
maxlength设置为8
第4个回答  推荐于2016-09-26
用js判断
function ValidateLenth()
{
var txt=$("txtName").val();
if(txt.length>6||txt.length<4)
{
alert(长度错误);
}
}
相似回答