RegName – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System.Collections.Generic;
2 using System.Linq;
3  
4 namespace RegName.Utilities
5 {
6 public static class Helpers
7 {
8 #region Public Enums, Properties and Fields
9  
10 public enum IncrementMode
11 {
12 AlphaNumeric = 1,
13  
14 Alpha = 2,
15  
16 Numeric = 3
17 }
18  
19 #endregion
20  
21 #region Public Methods
22  
23 /// <summary>
24 /// Alpha-numeric increment for strings.
25 /// </summary>
26 /// <param name="text">the string to increment</param>
27 /// <param name="mode">the increment mode</param>
28 /// <returns>an incremented string</returns>
29 /// <remarks>https://stackoverflow.com/questions/26174022/incrementing-an-alphanumeric-string</remarks>
30 public static string Increment(string text, IncrementMode mode)
31 {
32 var textArr = text.ToCharArray();
33  
34 // Add legal characters
35 var characters = new List<char>();
36  
37 if (mode == IncrementMode.AlphaNumeric || mode == IncrementMode.Numeric)
38 {
39 for (var c = '0'; c <= '9'; c++)
40 {
41 characters.Add(c);
42 }
43 }
44  
45 if (mode == IncrementMode.AlphaNumeric || mode == IncrementMode.Alpha)
46 {
47 for (var c = 'a'; c <= 'z'; c++)
48 {
49 characters.Add(c);
50 }
51 }
52  
53 // Loop from end to beginning
54 for (var i = textArr.Length - 1; i >= 0; i--)
55 {
56 if (textArr[i] == characters.Last())
57 {
58 textArr[i] = characters.First();
59 }
60 else
61 {
62 textArr[i] = characters[characters.IndexOf(textArr[i]) + 1];
63 break;
64 }
65 }
66  
67 return new string(textArr);
68 }
69  
70 #endregion
71 }
72 }