コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: StringRange.cs プロジェクト: SilentCC/ICU4N
 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]);
     }
 }
コード例 #3
0
            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]);
                }
            }