public IEnumerable <string> Split(string subject, PcreSplitOptions options, int count, int startIndex) { if (subject == null) { throw new ArgumentNullException(nameof(subject)); } if (startIndex < 0 || startIndex > subject.Length) { throw new ArgumentOutOfRangeException(nameof(startIndex)); } return(SplitIterator(subject, options, count, startIndex)); }
private IEnumerable <string> SplitIterator(string subject, PcreSplitOptions options, int count, int startIndex) { if (count == 0) { yield return(subject); yield break; } var index = 0; var captureCount = CaptureCount; var includeGroupValues = (options & PcreSplitOptions.IncludeGroupValues) != 0; foreach (var match in Matches(subject, startIndex)) { yield return(subject.Substring(index, match.Index - index)); index = match.GetStartOfNextMatchIndex(); if (includeGroupValues) { for (var groupIdx = 1; groupIdx <= captureCount; ++groupIdx) { var group = match[groupIdx]; if (group.Success) { yield return(group.Value); } } } if (--count == 0) { break; } } yield return(subject.Substring(index)); }
public static IEnumerable <string> Split(string subject, string pattern, PcreOptions options, PcreSplitOptions splitOptions) => Split(subject, pattern, options, splitOptions, -1, 0);
public IEnumerable <string> Split(string subject, PcreSplitOptions options) => Split(subject, options, -1, 0);
public static IEnumerable <string> Split(string subject, string pattern, PcreOptions options, PcreSplitOptions splitOptions, int count, int startIndex) => new PcreRegex(pattern, options).Split(subject, splitOptions, count, startIndex);
public IEnumerable <string> Split(string subject, PcreSplitOptions options) { return(Split(subject, options, -1, 0)); }
public static IEnumerable <string> Split(string subject, string pattern, PcreOptions options, PcreSplitOptions splitOptions, int count) { return(Split(subject, pattern, options, splitOptions, count, 0)); }