RegName – Rev 1

Subversion Repositories:
Rev:
using System.Collections.Generic;
using System.Linq;

namespace RegName.Utilities
{
    public static class Helpers
    {
        #region Public Enums, Properties and Fields

        public enum IncrementMode
        {
            AlphaNumeric = 1,

            Alpha = 2,

            Numeric = 3
        }

        #endregion

        #region Public Methods

        /// <summary>
        ///     Alpha-numeric increment for strings.
        /// </summary>
        /// <param name="text">the string to increment</param>
        /// <param name="mode">the increment mode</param>
        /// <returns>an incremented string</returns>
        /// <remarks>https://stackoverflow.com/questions/26174022/incrementing-an-alphanumeric-string</remarks>
        public static string Increment(string text, IncrementMode mode)
        {
            var textArr = text.ToCharArray();

            // Add legal characters
            var characters = new List<char>();

            if (mode == IncrementMode.AlphaNumeric || mode == IncrementMode.Numeric)
            {
                for (var c = '0'; c <= '9'; c++)
                {
                    characters.Add(c);
                }
            }

            if (mode == IncrementMode.AlphaNumeric || mode == IncrementMode.Alpha)
            {
                for (var c = 'a'; c <= 'z'; c++)
                {
                    characters.Add(c);
                }
            }

            // Loop from end to beginning
            for (var i = textArr.Length - 1; i >= 0; i--)
            {
                if (textArr[i] == characters.Last())
                {
                    textArr[i] = characters.First();
                }
                else
                {
                    textArr[i] = characters[characters.IndexOf(textArr[i]) + 1];
                    break;
                }
            }

            return new string(textArr);
        }

        #endregion
    }
}

Generated by GNU Enscript 1.6.5.90.