2016-08-17 182 views
-3

我想在C#windows應用程序中生成下一個字母數字字符串序列。檢查最大數量,並生成一個序列C#生成下一個字母數字字符串序列

EG-

A10100001 => A10100002 => A10100003 => A10100004 ...... A10100999 => A10101001 

    ABC000001 => ABC000002 => ABC000003 => ABC000004 ...... ABC000999 => ABC001001 

請幫助我,我是新來的編程...

+1

請出示你嘗試過什麼,什麼是不與它 –

回答

1

嘗試正則表達式提取的最後一個數字(我們有遞增):

private static string Next(string value) { 
    string number = Regex.Match(value, "[0-9]+$").Value; 

    return value.Substring(0, value.Length - number.Length) + 
     (long.Parse(number) + 1).ToString().PadLeft(number.Length, '0'); 
} 

或者Regex.Replace版本,這是更簡潔,但不可讀

private static string Next(string value) { 
    return Regex.Replace(value, "[0-9]+$", 
    match => (long.Parse(match.Value) + 1).ToString($"D{match.Length}")); 
} 

測試:

// "abc0046" 
Console.Write(Next("abc0045")); 
// "abc0045xyz124" (please, notice, that it's the last 123 which is incremented) 
Console.Write(Next("abc0045xyz123")); 

如果你有一個項目與相同的模式一個序列可以使用的Linq

string[] items = new string[] { "ABC001", "ABC105", "ABC024" }; 

// "ABC106" 
Console.Write(Next(items.Max())); 
+0

工作爲「AABC001Z99」我期待「AABC002A00」,但有一些意想不到的「AABC001Z100」:(任何幫助? –

+0

在我的代碼中,我只增加最後一個數字(99)(所以我們有100)。你可能想要添加1到36位(0..9A..Z)的數字,這是一個不同的問題 –

0
  1. 查找字符串中的第一個數字
  2. 拆分它
  3. 解析第二部分整數
  4. 增量
  5. 串聯