簡體   English   中英

檢查字符串是否包含忽略大小寫的字符

[英]Check if a string contains a character ignoring case

我在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兩次,一次是“ Lower Case”,另一次是“ Upper Case”。 我檢查了一下,找不到ContainsIgnoreCase之類的東西。

做到這種事情的最好方法是什么? (不要提及正則表達式,因為我不想使用它們)

以非常簡單的方式:-)

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

或者也許您可以做一個更有效的正則表達式

我的回答不完全是您要問的,它是更多建議,一種更好的驗證電話號碼的方法是使用libphonenumber(c#)庫https://libphonenumber.codeplex.com ,它是Google libphonenumber的端口。 我發現它是為我做的最好方法。 您可以根據國家/地區代碼驗證數字並在輸出中設置其格式。

更新。 這是該庫的最新版本https://www.nuget.org/packages/libphonenumber-csharp/

嘗試這個:

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

我的看法,使用Linq:

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

並在使用中:

var result = "12345678".ContainsOnlyDigits();

由於您似乎想測試數字(因為您的預期輸入是“手機號碼”,因此它可能是單行代碼:

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

無需檢查字符是否存在,而是切換邏輯並僅驗證所有內容都是數字:

public bool IsNumeric(string text)
{
    return text.All(char.IsDigit);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM