检查字符串是否包含忽略大小写

时间:2015-05-08 04:36:51

标签: c# string contains

我在GUI上有一个文本框,它带有一个"手机号码"作为输入。我想验证它是否有一些字符,这意味着数字无效

  

因此,数字9876543210 有效,而数字98765df013是   的无效

我制作了一系列所有角色(我不允许这样做)

string[] alphabeticChars       = new string[] {    
                                                                    "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"
                                                               };

然后我写了一个验证函数

public bool HasCharacters(string text)
{
    foreach(string character in this.alphabeticChars)
         if(text.Contains(character.ToLower()) || text.Contains(character.ToUpper())) 
                return true;

    return false;
}

正如你所看到的,我需要两次调用Contains,一个用于"小写"和#34;大写"的另一个时间。我检查过,无法找到ContainsIgnoreCase或其他东西。

这种事情的最佳方法是什么?(不要提及正则表达式,因为我不想使用它们)

6 个答案:

答案 0 :(得分:5)

以一种非常简单的方式: - )

foreach(string character in this.alphabeticChars)
     if(text.ToLower().Contains(character)) 
            return true;

或许你可以做一个效率更高的正则表达式

答案 1 :(得分:2)

我的回答并不是你要求的,更多的建议,验证电话号码的更好方法是使用libphonenumber(c#)库https://libphonenumber.codeplex.com,这是Google libphonenumber的端口。我发现这是为我做这件事的最佳方式。您可以根据国家/地区代码验证数字,并在输出中对其进行格式化。

更新。 这是库https://www.nuget.org/packages/libphonenumber-csharp/

的更新版本

答案 2 :(得分:1)

试试这个:

bool isValid = !text.Any(c => Char.IsLetter(c));

答案 3 :(得分:1)

我的看法,使用Linq:

public static class StringExtensions
{
    public static bool ContainsOnlyDigits(this string s)
    {
        return s.All(c => c >= '0' && c <= '9');
    }
}

并在使用中:

var result = "12345678".ContainsOnlyDigits();

答案 4 :(得分:1)

由于您似乎想要测试数字(因为您的预期输入是&#34;移动电话号码&#34;,它可以是一个单行:

bool isValid = text.All(Char.IsDigit);

答案 5 :(得分:1)

不是检查字符的存在,而是切换逻辑,只是验证一切都是数字:

public bool IsNumeric(string text)
{
    return text.All(char.IsDigit);
}
相关问题