Используйте C#, чтобы проверить, содержит ли строка целое число в заданном диапазоне чисел. - PullRequest
1 голос
/ 05 августа 2020

У меня есть список строк, некоторые из которых имеют формат «LAP1 _...», «LAP2 _...», ..., «LAP9 _...». Я хочу подсчитать все строки, следующие за форматом «LAP», плюс любое целое число от 1 до 9. Есть ли способ проверить, содержит ли строка подстроку, которая включает какое-либо целое число в заданном диапазоне?

Очевидно, я мог бы написать такой код:

 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();

Ответы [ 3 ]

0 голосов
/ 06 августа 2020

Обратный тест, чтобы его можно было перевести:

var lapCount = recentRecords.Where(r => r.nkFileName.StartsWith("LAP") && "0123456789".Contains(r.nkFileName.Substring(3,1))).Count();
0 голосов
/ 18 августа 2020

Вы можете попробовать следующий фрагмент кода:

   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 - это список строк.

0 голосов
/ 05 августа 2020

Вы можете использовать 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.IsDi git);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...