1.如何一个输入框textbox1有3位以上(包含三位)的时候(不区分大小写字母)
例如:textbox1为Admin的时候,另一输入框textbox2必须不包含以下:
Adm,dmi,min,Admi,dmin,admin
这样的check方法如何考虑 是否要用到正则表达式 请教大家牛人!2.一个输入框textbox1不能包含的有:逗号,句号,破折号,连字符,下划线,£,#,space,tab的check
但是补充的是需要如:
    输入框中文字为  :this is a famous thing
要求只有大于3位才做check,就是说 is 和 a 不用做前面的check
这个正则表达式会写 但如何做到这点补充的还请教各位指点下,实在想了很久

解决方案 »

  1.   

    那就根据用户输入的长度,在第一个字符串中枚举吧,反正不会太长,
    比如:admin用户输入长度为4,
    那么就比对一下是否为admi和dmin,这个思路比较简单,程序也简单,想提高效率的话,还有更好的方法,
    其实就是KMP一下,不过程序就会复杂一些。
      

  2.   


    public bool isExists(string txt1, string txt2)
    {
        for (int i = 3; i < txt1.Length; i++)
        {
            for (int j = 0; j < txt1.Length - i; j++)
            {
                if (txt2.IndexOf(txt1.Substring(j, i)) > -1) return true;
            }
        }
        return false;
    }
    //测试用代码
    private void button11_Click(object sender, EventArgs e)
    {
        MessageBox.Show(isExists(textBox1.Text,textBox2.Text).ToString());
    }试了下正则,没想出简单的方法,3-4行代码写不出来。
      

  3.   

    正则用于匹配一个串,是否在另一个串中出现的次数时,很方便。
    如果定量匹配,部分串是否在另一个串中,还不如用字符串函数(IndexOf)来的直接、简捷。
      

  4.   

    但是我试了下 你public bool isExists(string txt1, string txt2)
    {
        for (int i = 3; i < txt1.Length; i++)
        {
            for (int j = 0; j < txt1.Length - i; j++)
            {
                if (txt2.IndexOf(txt1.Substring(j, i)) > -1) return true;
            }
        }
        return false;
    }验证结果不对啊
      

  5.   


    public bool isExists(string txt1, string txt2) //忽略大小写
    {
        txt1 = txt1.ToLower();
        txt2 = txt2.ToLower();
        for (int i = 3; i < txt1.Length; i++)
        {
            for (int j = 0; j < txt1.Length - i; j++)
            {
                if (txt2.IndexOf(txt1.Substring(j, i)) > -1) return true;
            }
        }
        return false;
    }
    学方法,要思路,而不是要代码,才能真正提高。
      

  6.   

        protected void Button1_Click(object sender, EventArgs e)
        {
            string txt1 = TextBox1.Text.ToUpper();
            string txt2 = TextBox2.Text.ToUpper();
            if (isExists(txt1, txt2))
                Label1.Text = "True";
            else
                Label1.Text = "False";
        }    public bool isExists(string txt1, string txt2)
        {
            for (int i = 3; i < txt1.Length; i++)
            {
                for (int j = 0; j < txt1.Length - i; j++)
                {
                    if (txt2.IndexOf(txt1.Substring(j, i)) > -1) return true;
                }
            }
            return false;
        }
    呵呵一样啊
      

  7.   

    测试用例 TextBox1、TextBox2 值是什么?
      

  8.   

    第一题还是第二题?
    如果是第一题就是 
    TextBox1 = "KingSoft123@" 
    TextBox2 = "kin"TextBox1 = "KingSoft123@" 
    TextBox2 = "Kis"
      

  9.   


    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show(isExists(textBox1.Text).ToString());
    }
    public bool isExists(string str)
    {
        char[] chrs = ",._-£# \t".ToCharArray();  // 如果还加其他字符,参考在线帮助 MSDN转义符
        foreach (char chr in chrs)
        {
            if (str.IndexOf(chr) > -1) return true;
        }
        return false;
    }
      

  10.   

    public bool isExists(string str)
    {
        char[] chrs = ",._-£# \t".ToCharArray();  // 如果还加其他字符,参考在线帮助 MSDN转义符
        foreach (char chr in chrs)
        {
            if (str.IndexOf(chr) > -1) return true;
        }
        return false;
    }
    这个方法是否满足要求str中只有大于3位才做check?
      

  11.   

    比如 str ="this is web."
    只要检测 this和 web.
    其中is不用检测
      

  12.   


    private void button8_Click(object sender, EventArgs e)
    {
        string str = "this is web.";
        string[] strs = str.Split(' ');
        foreach (string s in strs)
        {
            if (s.Length > 3)
            {
                // 在此检验 s
            }
        }
    }
      

  13.   

    先用sqlit(" ")分隔字符串,如果length大于3的在做判断。
      

  14.   

    lzsh0622大哥 谢谢你啊 
    结帖了