#c_sharp #if
У меня есть множественные проверки в if-е, они содержат в себе повторяющийся код, можно ли этого избежать? В дальнейшем символов для проверки будет больше.
Ответы
Ответ 1
Делается это так. Добавляем нужные символы в HashSet(кстати, в него нельзя добавить одинаковые символы ни случайно, ни специально). Далее везде в коде проверяешь есть ли символ в HashSet . Почитай про HashSet , работает быстрее, чем обход массива, к примеру, на каждой итерации. using System; using System.Collections.Generic; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var charSet = new HashSet (new[] { ' ', '-', ',', '.', '_', ':', ';', '?', '(', ')', '!' }); string text = "Hi! My name is John."; Console.WriteLine(text); for (int i = 0; i < text.Length; i++) { if (charSet.Contains(text[i])) { Console.WriteLine(i); } } Console.ReadKey(true); } } } Ответ 2
Я бы сделал это при помощи String.Contains() из-за наглядности var map = " ,._:;&()!"; for (int i = 0; i < text.Length; i++) { if (map.Contains(text[i])) { ... } } Если же Вам важна производительность, все это дело можно сложить в HashSet и искать в нем var map = " ,._:;&()!"; var set = new HashSet(map); for (int i = 0; i < text.Length; i++) { if (set.Contains(text[i])) { ... } }
Комментариев нет:
Отправить комментарий