簡體   English   中英

C# 字符串以數字正則表達式開頭

[英]C# string starts with a number regex

我一直在尋找一段時間來弄清楚如何確認字符串以數字開頭。 我遇到了一個正則表達式 '/^\\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

你的正則表達式是錯誤的。 /.../是用於定義正則表達式的 javascript 約定。 在 C# 中嘗試這樣:

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

另請注意,您應該使用返回布爾值的IsMatch方法,否則您的代碼甚至無法編譯。

如果您想匹配以一位或多位數字開頭的字符串:

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

您不需要為此使用正則表達式。 嘗試

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

如果你想使用正則表達式, Regex.IsMatch(info,@"^\\d") //所以它只是Regex.IsMatch(info,@"^\\d")

它是您提供給 Regex.Match 的字符串格式。

正確的格式是:

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

@ 表示轉義字符(如反斜杠)被視為普通字符。 沒有它,您的正則表達式將需要為"^\\\\d"

你的正則表達式是錯誤的。 .Net 不使用 perl 風格的正則表達式。 正確的表達方式是@"^\\d"。

如果您不打算使用 .Match 中的 MatchCollection 進行任何操作,則應該使用 Regex.IsMatch(...):

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

如果您不想使用 Regex(某些面試問題平台不允許 regex )和Char.IsDigit(info[0])

您可以使用if(info[0] => 0 && info[9] <= 9)來檢查 char 是否為數字。

如果您不想考慮'.'則取決於要求'.' 作為 Digit(例如,僅適用於整數值)不要使用Char.IsDigit(info[0])因為此函數對'.'返回true '.'

如果您只是想找出字符串是否以數字開頭。 像上面一樣,您可以使用正則表達式跳過。 只需使用子字符串,刪除第一個字符並測試它是否為數字。

現在,如果您嘗試刪除整個數字,那么我會將字符串轉換為字符數組,並測試字符。

偽字符串 s = "" for each c in chars{ if c is number then s += c else exit for } 將 s 轉換為整數,你得到字符串開頭的數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM