[英]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.