RegName – Rev 1
?pathlinks?
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.