如何检查字符串中是否有特定的字符集?

时间:2014-05-14 18:19:06

标签: c# asp.net

我要求检查传入的字符串是否有任何字符和 - 在开头?

示例代码是:

        string name = "e-rob";
        if (name.Contains("[a-z]-"))
        {
            Console.WriteLine(name);
        }
        else
        {
            Console.WriteLine("no match found");
        }
        Console.ReadLine();`

以上代码无效。它不是必须的 - 它可以是任何角色然后 -

我该怎么做?

3 个答案:

答案 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-robE-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() + "-"));
}