2013-05-11 156 views
0

我正在使用下面的代碼來接受用戶輸入。我只想將用戶輸入限制爲單個字母(a-z)字符。我發現使用IsNumber驗證整數輸入以及關於在輸入字符串上使用正則表達式的很多信息都有很多驗證,但我一直無法發現如何使用此代碼限制輸入可能性。有人能指引我朝着正確的方向嗎?如何將用戶輸入限制爲c#中的單個字母字符?

public char promptForGuess() 
    { 
     Console.Write("\nGuess a letter: "); 
     String pre = Console.ReadKey().Key.ToString(); 
     string pre2 = pre.ToUpper(); 
     char pre3 = Convert.ToChar(pre2); 
    } 

回答

1

你不能限制只能放在A​​Z字符控制檯上的用戶 - 你要檢查輸入,他可以在任何字符寫的(只是覺得當輸入從文件重定向到您的程序有關<,例如yourapp.exe < input.dat)。

但它很容易檢查字母爲小寫A-Z字母。例如。與平原,ASCII,C策略(我會使用你定義的變量):

if('A' <= pre3 && pre3 <'Z') { // pre3 was made upper in your code 
    // input OK 
} else { 
    // input NOK 
} 

用正則表達式:

Regex r = new Regex(@"^[a-zA-Z]$"); 
return r.IsMatch(pre); 

如果你不能讓不區分大小寫字符,只是改變我寫的代碼。

無論如何,我認爲你需要Console.Read()(ReadKey也看了像箭頭鍵,F1-F12等...,因此所有的鑰匙,甚至標籤和大寫鎖定)。請參閱MSDN:http://msdn.microsoft.com/en-us/library/system.console.read.aspx

也許你應該使用這個功能,如果你想支持Unicode字母:http://msdn.microsoft.com/en-us/library/yyxz6h5w.aspx 需要注意的是Unicode字母通常不是一個字節!但char可以存儲它。這些字母例如美麗的匈牙利字母與尖銳的東西和這些國王的東西:á,é,ő,ű,ö,ü等(但也有法國有很多,也有荷蘭等...)

0

爲了判斷一個有效的字符串,你可以判斷由

str.length() == 1 && str[0] >= 'a' && str[1] <= 'z' 

並限制輸入的可能性,你可以寫一個循環,循環,如果輸入無效。

pre = read(); 
while (!valid(pre)) 
    pre = read(); 
0

你爲什麼不使用正則表達式

if (Regex.IsMatch(pre[0].ToString(), @"[A-Za-z]")) 
    { 
     //do someting 
    } 
    else 
    { 
     //do someting 
    } 
相關問題