我要求检查传入的字符串是否有任何字符和 - 在开头?
示例代码是:
string name = "e-rob";
if (name.Contains("[a-z]-"))
{
Console.WriteLine(name);
}
else
{
Console.WriteLine("no match found");
}
Console.ReadLine();`
以上代码无效。它不是必须的 - 它可以是任何角色然后 -
我该怎么做?
答案 0 :(得分:2)
尝试使用一些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;
Here's这是一个很好的链接,可以教你一些关于RegEx的信息,当你谈到匹配模式时,这是最好的工具
答案 1 :(得分:1)
试试Regex
Regex reg = new Regex("[a-z]-");
if(reg.IsMatch(name.SubString(0, 2))
{...}
答案 2 :(得分:1)
另一种方法,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() + "-"));
}