Answers for "Range numbers into comma separated string"

0

Range numbers into comma separated string

public static string CompactNumberRange(IEnumerable<int> range)
{
    var sorted = range.OrderBy(x => x);
    var output = new StringBuilder();

    using (var enumerator = sorted.GetEnumerator())
    {
        if (!enumerator.MoveNext())
            return "";

        var current = enumerator.Current;
        var count = 1;

        output.Append(current);

        while (enumerator.MoveNext())
        {
            var previous = current;
            current = enumerator.Current;

            if (current - previous == 1)
            {
                count++;
            }
            else
            {
                var format = count >= 3 ? "-{0}, {1}" : ", {0}, {1}, ";
                output.AppendFormat(format, previous, current);
                count = 1;
            }
        }

        if (count > 1)
            output.Append(current);
    }

    return output.ToString();
}
Posted by: Guest on February-07-2022

Code answers related to "Range numbers into comma separated string"

Browse Popular Code Answers by Language