[英]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.