Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
 public static IEnumerable <string> Split(string subject, string pattern, PcreOptions options, PcreSplitOptions splitOptions)
 => Split(subject, pattern, options, splitOptions, -1, 0);
Пример #4
0
 public IEnumerable <string> Split(string subject, PcreSplitOptions options)
 => Split(subject, options, -1, 0);
Пример #5
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);
Пример #6
0
 public IEnumerable <string> Split(string subject, PcreSplitOptions options)
 {
     return(Split(subject, options, -1, 0));
 }
Пример #7
0
 public static IEnumerable <string> Split(string subject, string pattern, PcreOptions options, PcreSplitOptions splitOptions, int count)
 {
     return(Split(subject, pattern, options, splitOptions, count, 0));
 }