using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string s = string.Empty;
StringBuilder sbr = new StringBuilder();
DateTime dt = DateTime.Now;
while (true)
{
s = GetNextLeter(s);
Console.Write(s + ",");
sbr.Append(s + ",");
if (string.IsNullOrEmpty(s) || s.Equals("ZZZZ"))
break;
}
DateTime dt2 = DateTime.Now;
TimeSpan span = dt2 - dt;
Console.Write("用时:" + span.TotalSeconds);
sbr.AppendLine("用时:" + span.TotalSeconds);
File.WriteAllText("d:\\leters.txt", sbr.ToString());
Console.Read();
}
private static string GetNextLeter(string number)
{
if (string.IsNullOrEmpty(number))
{
return "A001";
}
String pre = Regex.Replace(number, "[^a-zA-Z]", ""); // number.replaceAll("[^a-zA-Z]", "");// 获取字母部分
String counterStr = Regex.Replace(number, "[^0-9]", "");// number.replaceAll("[^0-9]", "");
// 字符+数字
if (!string.IsNullOrEmpty(counterStr))
{
int counter = int.Parse(counterStr);// 获取数字部分
counter++;
if (!CheckNumGreaterMax(pre, counter, ref counterStr))
{
return pre + counterStr;
}
// A999->AB01
pre = letterCounter(pre);
if (pre.Length > 4)
{
return "";
}
if (pre.Length < 4)
{
string s = "1";
s = s.PadLeft(4 - pre.Length, '0');
pre += s;
}
return pre;
}
String str = letterCounter(pre);
return str;
}
private static bool CheckNumGreaterMax(string pre, int counter, ref string counterStr)
{
int preL = pre.Length;
int maxConter = 0;
String str = "";
switch (preL)
{
case 1:
maxConter = 999;
str = counter.ToString().PadLeft(3, '0'); //String.format("%03d", counter);
break;
case 2:
maxConter = 99;
str = counter.ToString().PadLeft(2, '0');
break;
case 3:
maxConter = 9;
str = counter.ToString();
break;
}
if (counter > maxConter)
{
return true;
}
counterStr = str;
return false;
}
private static string letterCounter(String str)
{
int len = str.Length;
int startI = len - 1;
String tempA = "";
String tempB = "";
while (true)
{
tempA = "";
if (startI > 0)
{
tempA = str.Substring(0, len - 1);
}
//Z999->ZA
if (startI < 0 && len == 0)
{
tempA = str;
tempB = "A";
break;
}
else
{
tempB = str.Substring(startI, 1);
int lastCode = Asc(tempB);
lastCode++;
if (lastCode <= 90)
{
tempB = Chr(lastCode);
break;
}
startI--;
len--;
}
}
String newStr = tempA + tempB;
while (newStr.Length < str.Length)
{
newStr += "A";
}
return newStr;
}
public static int Asc(string character)
{
if (character.Length == 1)
{
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0];
return (intAsciiCode);
}
else
{
throw new Exception("Character is not valid.");
}
}
public static string Chr(int asciiCode)
{
if (asciiCode >= 0 && asciiCode <= 255)
{
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
byte[] byteArray = new byte[] { (byte)asciiCode };
string strCharacter = asciiEncoding.GetString(byteArray);
return (strCharacter);
}
else
{
throw new Exception("ASCII Code is not valid.");
}
}
}
}
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string s = string.Empty;
StringBuilder sbr = new StringBuilder();
DateTime dt = DateTime.Now;
while (true)
{
s = GetNextLeter(s);
Console.Write(s + ",");
sbr.Append(s + ",");
if (string.IsNullOrEmpty(s) || s.Equals("ZZZZ"))
break;
}
DateTime dt2 = DateTime.Now;
TimeSpan span = dt2 - dt;
Console.Write("用时:" + span.TotalSeconds);
sbr.AppendLine("用时:" + span.TotalSeconds);
File.WriteAllText("d:\\leters.txt", sbr.ToString());
Console.Read();
}
private static string GetNextLeter(string number)
{
if (string.IsNullOrEmpty(number))
{
return "A001";
}
String pre = Regex.Replace(number, "[^a-zA-Z]", ""); // number.replaceAll("[^a-zA-Z]", "");// 获取字母部分
String counterStr = Regex.Replace(number, "[^0-9]", "");// number.replaceAll("[^0-9]", "");
// 字符+数字
if (!string.IsNullOrEmpty(counterStr))
{
int counter = int.Parse(counterStr);// 获取数字部分
counter++;
if (!CheckNumGreaterMax(pre, counter, ref counterStr))
{
return pre + counterStr;
}
// A999->AB01
pre = letterCounter(pre);
if (pre.Length > 4)
{
return "";
}
if (pre.Length < 4)
{
string s = "1";
s = s.PadLeft(4 - pre.Length, '0');
pre += s;
}
return pre;
}
String str = letterCounter(pre);
return str;
}
private static bool CheckNumGreaterMax(string pre, int counter, ref string counterStr)
{
int preL = pre.Length;
int maxConter = 0;
String str = "";
switch (preL)
{
case 1:
maxConter = 999;
str = counter.ToString().PadLeft(3, '0'); //String.format("%03d", counter);
break;
case 2:
maxConter = 99;
str = counter.ToString().PadLeft(2, '0');
break;
case 3:
maxConter = 9;
str = counter.ToString();
break;
}
if (counter > maxConter)
{
return true;
}
counterStr = str;
return false;
}
private static string letterCounter(String str)
{
int len = str.Length;
int startI = len - 1;
String tempA = "";
String tempB = "";
while (true)
{
tempA = "";
if (startI > 0)
{
tempA = str.Substring(0, len - 1);
}
//Z999->ZA
if (startI < 0 && len == 0)
{
tempA = str;
tempB = "A";
break;
}
else
{
tempB = str.Substring(startI, 1);
int lastCode = Asc(tempB);
lastCode++;
if (lastCode <= 90)
{
tempB = Chr(lastCode);
break;
}
startI--;
len--;
}
}
String newStr = tempA + tempB;
while (newStr.Length < str.Length)
{
newStr += "A";
}
return newStr;
}
public static int Asc(string character)
{
if (character.Length == 1)
{
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0];
return (intAsciiCode);
}
else
{
throw new Exception("Character is not valid.");
}
}
public static string Chr(int asciiCode)
{
if (asciiCode >= 0 && asciiCode <= 255)
{
System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
byte[] byteArray = new byte[] { (byte)asciiCode };
string strCharacter = asciiEncoding.GetString(byteArray);
return (strCharacter);
}
else
{
throw new Exception("ASCII Code is not valid.");
}
}
}
}