28 public override async Task<List<(int, int)>>
Split(
string input)
30 List<(int, int)> indices =
new List<(
int,
int)>();
31 await Task.Run(() => {
33 bool seenChar =
false;
34 for (
int i = 0; i < input.Length; i++)
36 bool isDelimiter =
delimiters.Contains(input[i]);
39 while ((i < input.Length - 1) && (
delimiters.Contains(input[i + 1]) ||
char.IsWhiteSpace(input[i + 1]))) i++;
43 if (!seenChar) seenChar = !
char.IsWhiteSpace(input[i]);
45 if ((i == input.Length - 1) || (isDelimiter && seenChar))
47 indices.Add((startIndex, i));