LBu*_*kin 29
假设通过"英文字符"你只是指26个字符的拉丁字母,这将是我将使用正则表达式的区域: ^[a-zA-Z0-9 ]*$
例如:
if( Regex.IsMatch(Console.ReadLine(), "^[a-zA-Z0-9]*$") )
{ /* your code */ }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,正则表达式的好处在于,您真正关心的是字符串是否与模式匹配 - 这是正则表达式非常有效的方法.它清楚地捕捉了你的意图,如果你对"英文字符"的定义超出了26个字母,那么它很容易扩展.
JørnSchou-Rode的答案提供了一个很好的解释,说明这里呈现的正则表达式如何与您的输入相匹配.
Jør*_*ode 16
您可以将它与此正则表达式匹配: ^[a-zA-Z0-9]*$
^ 匹配字符串的开头(即在此点之前不允许任何字符)[a-zA-Z0-9] 匹配来自az的大写或小写的任何字母,以及数字0-9* 让前一个匹配重复零次或多次$ 匹配字符串的结尾(即此点后不允许使用任何字符)要在C#程序中使用表达式,您需要System.Text.RegularExpressions在代码中导入并执行以下操作:
bool match = Regex.IsMatch(input, "^[a-zA-Z0-9]*$");
Run Code Online (Sandbox Code Playgroud)
如果要针对模式测试很多行,可能需要编译表达式:
Regex pattern = new Regex("^[a-zA-Z0-9]*$", RegexOptions.Compiled);
for (int i = 0; i < 1000; i++)
{
string input = Console.ReadLine();
pattern.IsMatch(input);
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是检查IsLower和IsUpper两者是否不返回 true。就像是:
private bool IsAllCharEnglish(string Input)\n{\n foreach (var item in Input.ToCharArray())\n {\n if (!char.IsLower(item) && !char.IsUpper(item) && !char.IsDigit(item) && !char.IsWhiteSpace(item))\n {\n return false;\n }\n }\n return true;\n}\nRun Code Online (Sandbox Code Playgroud)\n并使用它:
\nstring str = "\xd9\x81\xd8\xa7\xd8\xb1\xd8\xb3\xdb\x8c abc";\nIsAllCharEnglish(str); // return false\n\nstr = "These are english 123";\nIsAllCharEnglish(str); // return true\nRun Code Online (Sandbox Code Playgroud)\n
接受的答案不适用于空格或标点符号。以下代码针对此输入进行了测试:
你好: 1. - 一个; b/c \ _(5)??
(是英文)
Regex regex = new Regex("^[a-zA-Z0-9. -_?]*$");
string text1 = "????";
bool fls = regex.IsMatch(text1); //false
string text2 = "123 abc! ?? -_)(/\\;:";
bool tru = regex.IsMatch(text2); //true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24037 次 |
| 最近记录: |