Из заданных строк нужно вывести только те, в которых в первой части строки (до знака ;) есть заданное слово - C#
Формулировка задачи:
Подскажите пожалуйста, есть строки например:
jjhtestii;blabla
test;blabla
testll;blabla
hhtest;blabla
из этих строк нужно вывести только те в которых в первой части строки (до знака ; ) есть заданное слово, в данном случае "test" без лишних символов.
т.е она должна вывести только строку test;blabla
Спасибо.
Решение задачи: «Из заданных строк нужно вывести только те, в которых в первой части строки (до знака ;) есть заданное слово»
textual
Листинг программы
class CustomStringComparer : IEqualityComparer<string> { public int GetHashCode(string str) { return str.Split(';')[0].GetHashCode(); } public bool Equals(string str1, string str2) { return string.Equals(str1.Split(';')[0],str2.Split(';')[0]); } public bool Equals(string s) { return false; } } class Program { public static void Main(string[] args) { List<string> list1 = new List<string>(); List<string> list2 = new List<string>(); List<string> log = new List<string>(); //Заполняем списки Random rnd = new Random(); for (int i = 0; i < 3000000; i++) { int r = rnd.Next(0,8000000); list2.Add(string.Concat(r.ToString(),";blabla")); } for (int i = 0; i < 400000; i++) { int r = rnd.Next(0,4000000); list1.Add(r.ToString()); } Stopwatch sw = new Stopwatch(); Console.WriteLine("Press any key to start"); Console.ReadKey(true); sw.Start(); var comparer = new CustomStringComparer(); log.AddRange(list1.Intersect(list2, comparer)); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Console.WriteLine(log.Count.ToString()); Console.ReadKey(true); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д