我从控制台读取了一个字符串。如何确保它只包含英文字符和数字?
发布于 2010-02-15 21:11:07
假设您所说的“英语字符”仅仅指的是26个字符的拉丁字母表,我将在这里使用正则表达式:^[a-zA-Z0-9 ]*$
例如:
if( Regex.IsMatch(Console.ReadLine(), "^[a-zA-Z0-9]*$") )
{ /* your code */ }
在这种情况下,正则表达式的好处是,您真正关心的是字符串是否与模式匹配-这是正则表达式非常有效的一个方面。它清楚地捕捉到了你的意图,如果你对“英文字符”的定义超出了26个字母的范围,那么它很容易扩展。
有一个不错的series of articles here,它教授了更多关于正则表达式的知识。
Jørn Schou-Rode的回答很好地解释了这里给出的正则表达式是如何匹配您的输入的。
发布于 2017-02-24 18:56:58
另一种方法是检查IsLower和IsUpper是否都没有返回true。类似于:
private bool IsAllCharEnglish(string Input)
{
foreach (var item in Input.ToCharArray())
{
if (!char.IsLower(item) && !char.IsUpper(item) && !char.IsDigit(item) && !char.IsWhiteSpace(item))
{
return false;
}
}
return true;
}
为了使用它:
string str = "فارسی abc";
IsAllCharEnglish(str); // return false
str = "These are english 123";
IsAllCharEnglish(str); // return true
发布于 2010-02-15 21:59:57
您是否可以访问web?我假设这是不能保证的,但是Google有一个语言api可以检测你传递给它的语言。google language api
https://stackoverflow.com/questions/2266088
复制相似问题