2014-12-03 55 views
1

我是C#的新手> Iam爲Windows創建應用程序> iam使用c#在WPF中創建窗體窗體。語言>投擲驗證消息以接受基於ASCII值的輸入

我有三個文本框,三個標籤,並在表格1>

在文本框中的一個兩個按鈕,我不得不接受只有[A .... Z,一... .z &一些特殊字符(&,$)和(。,)]> 我必須考慮輸入ASCII碼的Aceept數據... 對於EX:A​​的ASCII碼是65.> @的ASCII碼是64.

如果用戶輸入除上述提到的任何其他數據,我必須在消息框中輸入驗證消息>

MessageBox.show(「請輸入有效數據」);

我已經嘗試了一些基本的如果else語句,但它消耗更多的內存量..

+0

那麼你的問題是什麼? – 2014-12-03 14:17:28

+0

而不是使用預定義的正則表達式邏輯被實現爲接受輸入,考慮到Alphabets的ASCII碼,特殊字符。 @微軟DN。 – 2014-12-03 14:20:40

+0

你使用正則表達式來檢查這個嗎? – 2014-12-03 14:21:26

回答

0

你可以嘗試這樣的事情,如果正則表達式是太慢:

using System; 
using System.Linq; 

namespace Demo 
{ 
    public static class Program 
    { 
     private static void Main() 
     { 
      string test = "thisIsTheStringToCheck!"; 

      bool anyInvalidChars = !test.All(isValidChar); 

      Console.WriteLine(anyInvalidChars); // Prints True due to the "!" in the string. 
     } 

     private static bool isValidChar(char ch) 
     { 
      if ('A' <= ch && ch <= 'Z') 
       return true; 

      if ('a' <= ch && ch <= 'z') 
       return true; 

      switch (ch) 
      { 
       case '&': 
       case '$': 
       case '.': 
       case ',': 
       // Add more cases as required. 
       { 
        return true; 
       } 

       default: 
       { 
        return false; 
       } 
      } 
     } 
    } 
} 

或者,寫一個簡單的CharValidator類使用像這樣:

using System; 
using System.Linq; 

namespace Demo 
{ 
    public static class Program 
    { 
     private static void Main() 
     { 
      CharValidator validator = new CharValidator(); 

      validator.AddValidAsciiRange('A', 'Z'); 
      validator.AddValidAsciiRange('a', 'z'); 
      validator.AddValidAsciiChar('&'); 
      validator.AddValidAsciiChar('$'); 
      validator.AddValidAsciiChar('.'); 
      validator.AddValidAsciiChar(','); 

      string test = "thisIsTheStringToCheck!"; 

      bool anyInvalidChars = !validator.IsValidString(test); 

      Console.WriteLine(anyInvalidChars); // Prints True due to the "!" in the string. 
     } 
    } 

    public sealed class CharValidator 
    { 
     public void AddValidAsciiRange(char start, char end) 
     { 
      for (char ch = start; ch <= end; ++ch) 
       AddValidAsciiChar(ch); 
     } 

     public void AddValidAsciiChar(char ch) 
     { 
      if (ch >= 0 && ch <= 127) 
       _validAsciiChars[ch] = true; 
     } 

     public bool IsValidString(string str) 
     { 
      return str.All(IsValidChar); 
     } 

     public bool IsValidChar(char ch) 
     { 
      if (ch < 0 || ch >= 128) 
       return false; 

      return _validAsciiChars[ch]; 
     } 

     private readonly bool[] _validAsciiChars = new bool[128]; 
    } 
} 
+0

而不是使用普通字符。我需要使用ASCII碼字符來檢查用戶輸入。因此,對於每個客戶需求的變化,我們都不需要添加CASE語句。@Matthew Watson – 2014-12-03 14:34:23

+0

@Kartiikeya您需要更清楚地指定您的需求。你將如何提供這些ascii代碼? – 2014-12-03 14:35:17

相關問題