我是C#>的新手; Iam为Windows创建应用程序> 我使用c#在WPF中创建Windows窗体。语言>
我在表格1中有三个文本框,三个标签和两个按钮。>
在其中一个文本框中,我只能接受[A .... Z,a .... z&一些特殊字符(&,$)和(。,)]> 考虑到输入的ASCII代码,我必须使用Aceept数据... 对于EX:A的ASCII码是65.> @的ASCII码是64。
如果用户正在键入除上述之外的任何其他数据..我必须使用消息框抛出验证消息。>
MessageBox.show("请输入有效数据");
我尝试了一些基本的If else语句,但它消耗了更多的内存..
答案 0 :(得分: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];
}
}