Регулярные выражения могут помочь в этом требовании.Вы можете определить шаблон поиска с помощью регулярных выражений, и библиотека найдет все результаты, соответствующие шаблону.Ниже код находит числа, идущие после имени "sara".
using System;
using System.Text.RegularExpressions;
namespace consoleapp
{
class Program
{
static void Main(string[] args)
{
string text = "john monday 500 sara monday 600 sunny monday 1200 john monday 500 sara monday 300 sunny monday 2200 john monday 400 sara monday 100 sunny monday 500 john monday 520 sara monday 600 sunny monday 10 john monday 990 sara monday 850 sunny monday 1000 john monday 300 sara monday 200 sunny monday";
var saraPattern = new Regex(@"sara\s\w+\s\d+");
var numberPattern = new Regex(@"[\d\.\,]+");
var matches = saraPattern.Matches(text);
foreach (Match match in matches)
{
var numbermatch = numberPattern.Match(match.Value);
var number = float.Parse(numbermatch.Value);
Console.WriteLine(number);
}
Console.ReadKey();
}
}
}
Что касается объяснения шаблонов:
saraPattern (sara\s\w+\s\d+
) гласит: findпоследовательность символов, которая начинается с "sara
", затем следует пробел (\s
), затем один или несколько символов слова (\w+
), затем снова пробел (\s
), затем одинили более десятичных символов (\ d +)
В этом шаблоне будут найдены последовательности типа «sara monday 600»
numberPattern ([\d\.\,]+
), которые: находят последовательность символовкоторый содержит один или несколько из следующих символов: десятичный (\d
) или запятая (\,
) или точка (\.
)
Этот шаблон извлечет числа (например, 600) из ранее найденныхпоследовательность (например, "sara monday 600")
Вы можете изучить регулярные выражения в Википедии (https://en.wikipedia.org/wiki/Regular_expression) или вы можете следовать базовому учебнику на этом сайте: https://regexone.com/