C#字符串以正则数字开头

时间:2011-06-16 13:03:04

标签: c# regex string digits

我一直在寻找一段时间来弄清楚如何确认字符串以数字开头。我遇到了一个正则表达式'/ ^ \ d /',我可以确认如果以数字开头。但是我似乎无法在下面的代码中使用它。我在if(Regex.Match(info,"/^\d/"))声明中哪里出错?

//String attachbody is the attachment body from an email C read into a string
string[] data = Regex.Split(attachbody, "\n");

foreach (String info in data)
{
    if (Regex.Match(info,"/^\d/"))
    {
        string[] tabbedHeaderData = Regex.Split(info, "\t");
        TicketID = tabbedHeaderData[0].ToString();
        Status = tabbedHeaderData[1].ToString();
        URL = tabbedHeaderData[2].ToString();
        InitCats = tabbedHeaderData[3].ToString();
        PostRevCats = tabbedHeaderData[4].ToString();
        ListNumClosed = tabbedHeaderData[5].ToString();

        Console.WriteLine(TicketID);
        Console.WriteLine(Status);
        Console.WriteLine(URL);
        Console.WriteLine(InitCats);
        Console.WriteLine(PostRevCats);
        Console.WriteLine(ListNumClosed);
        Console.ReadLine();
    }
}

示例数据(制表符分隔):
TicketID状态URL InitCats PostRevCats ListNumClosed 555555已关闭http://5555555.com/searcho个恶意网站55555

6 个答案:

答案 0 :(得分:48)

你的正则表达式错了。 /.../是用于定义正则表达式的javascript约定。在C#中尝试这样:

if (Regex.IsMatch(info, @"^\d"))

另请注意,您应该使用返回布尔值的IsMatch方法,否则您的代码甚至无法编译。

如果你想匹配字符串以一个或多个数字开头:

if (Regex.IsMatch(info, @"^\d+"))

答案 1 :(得分:28)

你不需要正则表达式。尝试

if (info.Length > 0 && char.IsDigit(info[0]))
{
   ...
}

如果您想使用正则表达式,请取出//,这样只有Regex.IsMatch(info,@"^\d")

答案 2 :(得分:4)

这是您提供给Regex.Match的字符串格式。

正确的格式是:

Regex.Match(info,@"^\d")

@表示转义字符(如反斜杠)被视为普通字符。没有它,你的正则表达式需要"^\\d"

答案 3 :(得分:1)

你的正则表达式错了。 .Net不使用perl风格的正则表达式。正确的表达式是@“^ \ d”。

如果你不打算使用.Match中的MatchCollection做任何事情,你应该使用Regex.IsMatch(...):

RegEx.IsMatch(info, @"^\d")

答案 4 :(得分:0)

如果您只是试图找出字符串是否以数字开头。 像上面一样,你可以使用正则表达式。 只需使用Substring,删除第一个字符并测试它是否为数字。

现在,如果您尝试删除整个数字,那么我会将字符串转换为char数组,并测试字符。

伪 string s =“” 每个c in chars { 如果c是数字那么   s + = c 其他   退出 } 将s转换为整数,你在字符串的开头得到了数字。

答案 5 :(得分:0)

如果您不想使用正则表达式(某些inteview问题平台不允许正则表达式)和Char.IsDigit(info[0])

您可以使用if(info[0] => 0 && info[9] <= 9)检查char是否为数字。

取决于要求,如果您不希望将'.'视为数字(例如,仅用于整数值),请勿使用Char.IsDigit(info[0]),因为此函数为true返回'.'