Метод .split() - C#
Формулировка задачи:
Итак, помогите пожалуйста написать метод сплит, или скопипастьте мне его код, пожалуйста.
Просто мне сказали не пользоваться сплитом, а писать самому. Я сделал разделитель, но не могу из него метод создать. Помогите написать метод, который через разделитель указанный сделает массив строк
Решение задачи: «Метод .split()»
textual
Листинг программы
- class Program
- {
- private static void Main(string[] args)
- {
- string str = ",123,546,879,454,";
- foreach (var word in str.MySplit(new []{',','.',' '}))
- {
- Console.WriteLine( "_{0}_",word);
- }
- Console.ReadLine();
- }
- }
- public static class MyClass
- {
- public static string[] MySplit(this string str, char[] separators,bool withEmpty = false)
- {
- if (separators == null) throw new ArgumentNullException("separators");
- if (str == null) throw new ArgumentNullException("str");
- if (separators.Length == 0) throw new ArgumentException("Массив пустой");
- if (string.IsNullOrWhiteSpace(str)) throw new ArgumentException("Строка пустая");
- var list = new List<string>();
- int start=-1, end=0;
- string substr = string.Empty;
- for (int i = 0; i < str.Length; i++)
- {
- if (!separators.Contains(str[i]))
- continue;
- // если текущий символ есть в массиве разделителей
- end = i;
- substr = str.Substring(start + 1, end - start - 1);
- if (!withEmpty)
- {
- // если опция без пустых строк то не копируем если строка пустая
- if (!string.IsNullOrWhiteSpace(substr))
- list.Add(substr);
- }
- else
- {
- list.Add(substr);
- }
- start = end;
- }
- substr = str.Substring(end + 1, str.Length - end - 1);
- if (!withEmpty)
- {
- // если опция без пустых строк то не копируем если строка пустая
- if (!string.IsNullOrWhiteSpace(substr))
- list.Add(substr);
- }
- else
- {
- list.Add(substr);
- }
- return list.ToArray();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д