2010-07-20 100 views
5

如何檢查我的輸入是否是特定類型的字符串。所以沒有數字,沒有「/」,...檢查字符串輸入的內容

+0

d你有任何機會意味着字母(只有字母),而不是字符串? – BoltClock 2010-07-20 18:43:59

+1

你的意思是,「如何檢查一個字符串是否只包含字符?」 – 2010-07-20 18:44:16

+1

您的意思是僅包含字母數字字符的字符串嗎?你能準確定義哪些字符? – 2010-07-20 18:45:16

回答

15

好了,檢查輸入實際上是System.String類型的對象,你可以簡單地做:

bool IsString(object value) 
{ 
    return value is string; 
} 

要檢查一個string只包含字母,你可以做這樣的事情:

bool IsAllAlphabetic(string value) 
{ 
    foreach (char c in value) 
    { 
     if (!char.IsLetter(c)) 
      return false; 
    } 

    return true; 
} 

如果你想結合這些,你可以這樣做:

bool IsAlphabeticString(object value) 
{ 
    string str = value as string; 
    return str != null && IsAllAlphabetic(str); 
} 
+1

兩者都是很好的例子,因爲標題和問題不完全匹配。 – corsiKa 2010-07-20 18:49:56

6

這並不完全清楚你想要什麼,但你可以用正則表達式來做。例如,要檢查你的字符串包含在AZ或az只有字母,你可以這樣做:

string s = "dasglakgsklg"; 
if (Regex.IsMatch(s, "^[a-z]+$", RegexOptions.IgnoreCase)) 
{ 
    Console.WriteLine("Only letters in a-z."); 
} 
else 
{ 
    // Not only letters in a-z. 
} 

如果您還想允許空格,下劃線或其它字符只需在正則表達式的方括號內添加它們。請注意,某些字符在正則表達式字符類中有特殊含義,需要用反斜槓進行轉義。

您還可以使用\p{L}而不是[a-z]來匹配任何被認爲是字母的Unicode字符,包括字母在外國字母表中。

1

像這樣的東西(未測試)可能適合您的(模糊的)要求。

if (input is string) 
{ 
    // test for legal characters? 
    string pattern = "^[A-Za-z]+$"; 
    if (Regex.IsMatch(input, pattern)) 
    { 
     // legal string? do something 
    } 

    // or 
    if (input.Any(c => !char.IsLetter(c))) 
    { 
     // NOT legal string 
    } 
} 
2
using System.Linq; 
... 

bool onlyAlphas = s.All(c => (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); 
+1

+1不使用正則表達式! – Aren 2010-07-20 18:52:44

+1

-1由於殘酷 – Luiscencio 2010-07-20 18:53:56

+0

不要誤解我的意思:正則表達式有它的用處。但是對於這樣一個簡單的單通道算法來說,這是過度的。不過,我更喜歡裏德的回答。不知道「Char.IsLetter」。 – StriplingWarrior 2010-07-20 18:55:25

10

如果你的意思是 「是字符串完全字母」,你可以這樣做:

string myString = "RandomStringOfLetters"; 
bool allLetters = myString.All(c => Char.IsLetter(c)); 

這是基於LINQ和Char.IsLetter方法。

+1

這很酷=) – Luiscencio 2010-07-20 18:51:12

+0

Char.IsLetter如何處理本地化? – ahsteele 2010-07-20 18:57:18

+0

@ahsteele:它實際上是System.Globalization。CharUnicodeInfo處理這個非拉丁字符。 – 2010-07-20 18:59:58

相關問題