[英]How to check the string has specific set of character in it or not?
我需要检查输入的字符串是否包含任何字符,并且-在开始时?
示例代码是:
string name = "e-rob";
if (name.Contains("[a-z]-"))
{
Console.WriteLine(name);
}
else
{
Console.WriteLine("no match found");
}
Console.ReadLine();`
上面的代码不起作用。 它不一定是-始终可以是任何字符,然后-
我怎样才能做到这一点?
尝试使用一些RegEx:
Regex reg = new Regex("^[a-zA-Z]-");
bool check = reg.IsMatch("e-rob");
或更简洁:
if (Regex.IsMatch("e-rob", "^[a-zA-Z]-")) {
// do stuff for when it matches here
}
神奇的地方是^[a-zA-Z]
。 逐段分解:
^
:告诉它从检查模式的开头开始
[a-zA-Z]
:告诉它检查A和Z之间的一个大写或小写字母
-
:告诉它在字母后直接检查“-”字符
因此e-rob
或E-rob
都将返回true,而abcdef-g
将返回false
另外,请注意,要使用RegEx,您需要包括
using System.Text.RegularExpressions;
在您的课程文件中
这是一个很好的链接,可以教您一些有关RegEx的信息,这是有史以来讨论匹配模式时最好的工具
试试正则表达式
Regex reg = new Regex("[a-z]-");
if(reg.IsMatch(name.SubString(0, 2))
{...}
另一种方法是LINQish:
StartsWithLettersOrDash("Test123");
public bool StartsWithLettersOrDash(string str)
{
string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char [] alphas = (alphabet + alphabet.ToLower()).ToCharArray();
return alphas.Any(z => str.StartsWith(z.ToString() + "-"));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.