C#检查输入是否只包含小写字母a-z

时间:2015-03-23 11:52:26

标签: string punctuation

我坚持尝试打印只包含小写字母a-z的单词。我已经删除了输入的字符串,如果它包含任何数字0-9并且它包含一个大写字母:

    String[] textParts;
    textParts = text.Split(delimChars);
    for (int i = 0; i < textParts.Length; i++)  //adds s to words list and checks for capitals
    {
        String s = textParts[i];
        bool valid = true;

        foreach (char c in textParts[i])
        {
            if (char.IsUpper(c))
            {
                valid = false;
                break;
            }

            if (c >= '0' && c <= '9')
            {
                valid = false;
                break;
            }

            if (char.IsPunctuation(c))
            {
                valid = false;
                break;
            }

        }
        if (valid) pageIn.words.Add(s);

到目前为止,这是我的代码。最后一部分我试图检查一个单词是否包含任何标点符号(它不起作用)是否有更简单的方法可以做到这一点,我怎样才能使我的代码的最后一部分工作?

P.S。我对使用正则表达式感到不舒服。

非常感谢, 埃利

3 个答案:

答案 0 :(得分:1)

如果没有正则表达式,你可以使用LINQ(可能性能较差)

bool isOnlyLower = s.Count(c => Char.IsLower(c)) == s.Length;

Count将检索以下字符串中较低的char数。如果它与字符串的长度匹配,则字符串仅由小写字母组成。

答案 1 :(得分:0)

var regex = new Regex("^[a-z]+$");
if (!regex.IsMatch(input))
{
            // is't not only lower case letters, remove input
}

答案 2 :(得分:-1)

我不确定我的问题是否正确,但不应该做以下工作?

for (int i = 0; i < textParts.Length; i++)  //adds s to words list and checks for capitals
{
    String s = textParts[i];

    if(s.Equals(s.ToLower()))
    {
        // string is all lower
    }
}