c#验证输入字符串并使用Threading替换为TitleCase

时间:2017-05-12 10:23:32

标签: c# .net regex winforms

我想检查用户在文本框中写的是什么,并从winform中包含的textBox中获取此输入字符串,然后需要转换为将单词的每个字母大写。

使用此输入,我需要首先验证他们是否将文本框留空,为空。第二步是检查他们是否使用标题案例形成一个连贯的句子“换句话说,确保他们没有使用大写锁定打字或反之亦然”。

我一直在研究有关验证的线程和正则表达式。使用线程我使用了方法IsLower()然后使用ToLower()。这可能是转换输入的一种相当长的方式,至少我可以将每个单词的所有首字母转换为大写字母,将所有字母转换为大写字母。

如果我没有充分解释我的问题,请询问并很乐意解雇任何额外信息,请在下面找到我的源代码:

        string myText = tbProductId.Text;

        //// Check for null values
        if (myText.Equals(""))
        {    //// display Error prompt
            MessageBox.Show("Please enter somthing");
            //// Get length of entered string
        }

        else
        {

            for (int i = 0; i < myText.Length; i++)
            {
                //// check if lower case
                if (char.IsLower(myText[i]))
                {
                    string asTitleCase = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.
                    ToTitleCase(myText.ToLower());
                    MessageBox.Show("Please enter non Captilised strings");

                }
            }
            for (int i = 0; i < myText.Length; i++)
            {
                if (char.IsUpper(myText[i]))
                {
                    string asTitleCase = System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.
                   ToTitleCase(myText.ToUpper());
                    MessageBox.Show("Please enter strings in Title Case");
                }
            }

        }
    }

1 个答案:

答案 0 :(得分:0)

感谢所有反馈和帮助,请找到@WiktorStribiżew提供的以下解决方案。然而还有一个问题,当转换被保持时它是不活动的并且没有任何想法为什么它将使用大写锁定而不是转移?

   string myText = tbProductId.Text;
        if (myText.Equals(""))
        {
            MessageBox.Show("Please enter somthing");
        }
        else
        {
            tbProductId.Text = System.Threading.Thread.CurrentThread.CurrentCulture.TextInf‌​o.ToTitleCase(tbProd‌​uctId.Text);

            tbProductId.Focus();
            tbProductId.Select(tbProductId.Text.Length, 0);
            //Move Cursor to location of where error

        }