簡體   English   中英

使用 C# 檢查字符串是否在給定的數字范圍內包含 integer

[英]Use C# to check is string contains an integer in a given range of numbers

我有一個字符串列表,其中一些格式為“LAP1_...”、“LAP2_...”、...、“LAP9_...”。 我想計算所有遵循“LAP”格式的字符串加上任何 integer 1-9。 有沒有辦法檢查一個字符串是否包含一個 substring 包含給定范圍內的任何 integer ?

我顯然可以這樣寫代碼:

 var lapCount = recentRecords.Where(x => x.nkFileName.Contains("LAP1")||x.nkFileName.Contains("LAP2") || x.nkFileName.Contains("LAP3")
            || x.nkFileName.Contains("LAP4") || x.nkFileName.Contains("LAP5") || x.nkFileName.Contains("LAP6") || x.nkFileName.Contains("LAP7")
            || x.nkFileName.Contains("LAP8") || x.nkFileName.Contains("LAP9")).Count();

但這似乎不必要地長。

我寧願讓搜索看起來像這樣:

 var lapCount = recentRecords.Where(x => x.nkFileName.Contains("LAP[1-9]")).Count();

您可以使用 char.IsDigit https://docs.microsoft.com/de-de/dotnet/api/system.char.isdigit?view=netcore-3.1

string stringWithNumber = "樣本 43 字符串 7,編號為 42"; stringWithNumber.Any(char.IsDigit);

反轉測試,以便可以翻譯:

var lapCount = recentRecords.Where(r => r.nkFileName.StartsWith("LAP") && "0123456789".Contains(r.nkFileName.Substring(3,1))).Count();

您可以嘗試以下代碼片段:

   List<string> strList = new List<string>()
    {
            "LAP1","ABC","explorer","LAP2","LAP3","xyz"
    };
    var myRegex=new Regex(@"LAP[0-9]");
    List<string> resultList=strList.Where(f => myRegex.IsMatch(f)).ToList();

結果將是:

結果

所以在你的情況下,我相信你可以使用:

var myRegex=new Regex(@"LAP[0-9]");   
List<string> resultList=recentRecords.Where(f => myRegex.IsMatch(f.nkFileName)).ToList();

確保recentRecords是一個字符串列表。

暫無
暫無

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

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