public static ICollection <string> Expand(string start, string end, bool requireSameLength, ICollection <string> output) { if (start == null || end == null) { throw new ICUException("Range must have 2 valid strings"); } #pragma warning disable 612, 618 int[] startCps = CharSequences.CodePoints(start); int[] endCps = CharSequences.CodePoints(end); #pragma warning restore 612, 618 int startOffset = startCps.Length - endCps.Length; if (requireSameLength && startOffset != 0) { throw new ICUException("Range must have equal-length strings"); } else if (startOffset < 0) { throw new ICUException("Range must have start-length ≥ end-length"); } else if (endCps.Length == 0) { throw new ICUException("Range must have end-length > 0"); } StringBuilder builder = new StringBuilder(); for (int i = 0; i < startOffset; ++i) { builder.AppendCodePoint(startCps[i]); } Add(0, startOffset, startCps, endCps, builder, output); return(output); }
public Ranges(string s) { int[] array = CharSequences.CodePoints(s); ranges = new Range[array.Length]; for (int i = 0; i < array.Length; ++i) { ranges[i] = new Range(array[i], array[i]); } }
public Ranges(string s) { #pragma warning disable 612, 618 int[] array = CharSequences.CodePoints(s); #pragma warning restore 612, 618 ranges = new Range[array.Length]; for (int i = 0; i < array.Length; ++i) { ranges[i] = new Range(array[i], array[i]); } }