我从控制台读取了一个字符串。如何确保它只包含英文字符和数字?
我从控制台读取了一个字符串。如何确保它只包含英文字符和数字?
foreach (char ch in str.ToCharArray())
{
int x = (int)char;
if (x >= 63 and x <= 126)
{
//this is english letter, i.e.- A, B, C, a, b, c...
}
else if(x >= 48 and x <= 57)
{
//this is number
}
else
{
//this is something diffrent
}
}
http://zh.wikipedia.org/wiki/ASCII 获取完整 ASCII 表。
但我仍然认为,正则表达式是最佳解决方案。
我同意正则表达式的答案。但是,你可以简化它到只有 "^[\w]+$"。\w 是任何“单词字符”(如果你使用非 Unicode 字母表,则转换为 [a-zA-Z_0-9]。我不知道你是否也想要下划线。
在 .net 中更多关于正则表达式的信息,请参见:http://msdn.microsoft.com/en-us/library/ms972966.aspx#regexnet_topic8
正如许多人指出的那样,如果字符串中只有一个单词,则接受的答案才有效。由于没有回答涵盖字符串中多个单词甚至句子的情况,因此这里是代码:
stringToCheck.Any(x=> char.IsLetter(x) && !((int)x >= 63 && (int)x <= 126));