jga*_*fin 193
在.NET 4.0中,您可以使用LINQ:
if (yourText.All(char.IsLetterOrDigit))
{
//just letters and digits.
}
Run Code Online (Sandbox Code Playgroud)
yourText.All因为合同无法履行,将停止执行并返回false第一次char.IsLetterOrDigit报告.falseAll
注意!这个答案并没有严格检查字母数字(通常是AZ,az和0-9).这个答案允许本地人物喜欢åäö.
更新2018-01-29
上述语法仅在使用具有正确类型的单个参数的单个方法时才有效(在本例中char).
要使用多个条件,您需要这样写:
if (yourText.All(x => char.IsLetterOrDigit(x) || char.IsWhiteSpace(x)))
{
}
Run Code Online (Sandbox Code Playgroud)
cle*_*tus 170
使用以下表达式:
^[a-zA-Z0-9]*$
Run Code Online (Sandbox Code Playgroud)
即:
using System.Text.RegularExpressions;
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString)) {
...
}
Run Code Online (Sandbox Code Playgroud)
JP *_*oto 34
您可以使用扩展功能而不是正则表达式轻松完成...
public static bool IsAlphaNum(this string str)
{
if (string.IsNullOrEmpty(str))
return false;
for (int i = 0; i < str.Length; i++)
{
if (!(char.IsLetter(str[i])) && (!(char.IsNumber(str[i]))))
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
每个评论:) ...
public static bool IsAlphaNum(this string str)
{
if (string.IsNullOrEmpty(str))
return false;
return (str.ToCharArray().All(c => Char.IsLetter(c) || Char.IsNumber(c)));
}
Run Code Online (Sandbox Code Playgroud)
kyo*_*ryu 17
虽然我认为基于正则表达式的解决方案可能就是我的方式,但我很想将其封装在一个类型中.
public class AlphaNumericString
{
public AlphaNumericString(string s)
{
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(s))
{
value = s;
}
else
{
throw new ArgumentException("Only alphanumeric characters may be used");
}
}
private string value;
static public implicit operator string(AlphaNumericString s)
{
return s.value;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当你需要一个经过验证的字符串时,你可以让方法签名需要一个AlphaNumericString,并且知道如果你得到一个,它就是有效的(除了空值).如果有人试图传入未经验证的字符串,则会生成编译器错误.
如果你愿意的话,你可以更好地实现所有的相等运算符,或者从普通的ol'字符串显式转换为AlphaNumericString.
我需要检查AZ,az,0-9; 没有正则表达式(即使OP要求正则表达式).
在这里混合各种答案和评论,以及来自/sf/answers/698298541/的讨论,这可以测试字母或数字,避免使用其他语言字母,并避免使用其他数字,例如分数字符.
if (!String.IsNullOrEmpty(testString)
&& testString.All(c => Char.IsLetterOrDigit(c) && (c < 128)))
{
// Alphanumeric.
}
Run Code Online (Sandbox Code Playgroud)