在此,我不得不补充一点:问题是:汉字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不等于零,也就是说汉字和字母是一样的,这该怎么办呢?
行啊,当然,有代码吗?
追答你的逻辑是 字母+汉字,长度不超过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("符合要求");