2017-09-05 67 views
0

我有一個字符串ABC0001轉換字符串爲Int並添加特定值

我想補充+1在DB每一個新的條目。

如果我拿SubString(3, myStr.Length -3),它只給我1,修剪所有0(零)。

是否有任何其他方式可以爲每個新條目添加+1?

謝謝。

+1

正則表達式會做詭計 –

+0

你做那個子串,並存儲結果字符串的長度(例如對於0001,4)。然後你可以將字符串轉換爲一個整數(= 1);添加+1(= 2);將它再次轉換爲字符串(=「2」),並添加儘可能多的0,以填充原始字符串的長度(在這種情況下爲3個零(4-resultString.length) –

+0

'substring'並添加一個'yourNumber'。 ToString(「0000」);',<這將返回'0002'。然後追加到第一部分 – adiga

回答

1

我們來試試下面的代碼。我認爲這將幫助你:

var myStr = "ABC0001"; 
var numStr = Int32.Parse(myStr.Substring(3, myStr.Length -3)); 
numStr += 1; 
myStr = myStr.Substring(0, 3) + numStr.ToString("0000"); 

Console.WriteLine(myStr); 
0

下面是一個例子,這也可以使用正則表達式來完成,下面的代碼可能需要進行一些調整以適應您的需求。但它會給你很長的路要走:

string data = "ABC0001"; 
string digits = new String(data.ToCharArray().Where(c => Char.IsDigit(c)).ToArray()); 
int num = Int32.Parse(digits); 
num++; 
1

它可以用正則表達式來完成

string input = "ABC0001"; 

Regex reg = new Regex(@"([a-zA-Z]+)(\d+)"); 
Match result = reg.Match(input); 

string alpha = result.Groups[1].Value; 
string number = result.Groups[2].Value; 

int inp = (Int32.Parse(number) + 1).ToString("D4"); //get 0002 

input = alpha + inp ; // get ABC0002 
0

嘗試這樣的正則表達式

using System.Text.RegularExpressions; 

var match = Regex.Match("MD00123", @"^([^0-9]+)([0-9]+)$"); 
var num = int.Parse(match.Groups[2].Value); 
var after = match.Groups[1].Value + (num + 1).ToString("D4"); 
MessageBox.Show(after.ToString()); 
0

我已經擴大從hiule的代碼,所以它現在應該工作:

 var myStr = "ABC0001"; 
     var numStr = Int32.Parse(myStr.Substring(3, myStr.Length - 3)); 
     numStr += 1; 
     myStr = myStr.Substring(0,3) + numStr.ToString("0000"); 

我給了我結果「ABC0002」,我認爲這應該是你想要的結果。

0

而且一個簡單的只是用字符串格式化:

 string s = "ABC0001"; 
     int index = Int16.Parse(s.Substring(3, s.Length - 3)) + 1; 
     string result = s.Substring(0, 3) + $"{index:D4}"; 

一個完整的示例程序:

static void Main(string[] args) 
    { 
     string s = "ABC0000"; 
     for(int i = 0; i < 10; i++) 
     { 
      int index = Int16.Parse(s.Substring(3, s.Length - 3)) + 1; 
      s = s.Substring(0, 3) + $"{index:D4}"; 
      Console.WriteLine(s); 
     } 
     Console.ReadLine(); 
    } 
+0

不工作。它給了我結果「ABC11」 –

+0

你在最後一行D後忘了'4'嗎?只需複製粘貼示例程序並檢查出來... –

+0

感謝Johan的幫助 –

0

試試這個:

myStr = myStr.Substring(0, 3) 
     + (Convert.ToInt32(data.Substring(3, myStr.Length -3)) + 1).ToString("0000"); 

我把它作爲簡潔明瞭的我可以。

0

試試這個,

string test = "ABC0001"; 
string leftSide = string.Join("", test.Take(3)); // take 3 of string 'ABC' 
int num = Convert.ToInt32(string.Join("", test.Skip(3))) + 1; // skip 3 to get 0001 
leftSide = leftSide + 
      string.Concat(Enumerable.Repeat("0", 4 - num.ToString().Length)) + 
      num; // ABC + repeat 0 elements according to increased num + append the new num 

希望幫助,

0

還有一個解決辦法:

 var bdRecords = new List<string>(); // new collection of database records. 

     string text = "ABC0001"; // initial string. Can it be initially "ABC"? 

     for (int i = 1; i <= 100; i++) // looping through all needed existing records (suppose we have 100, but you didn`t provide some initial info about database records). "foreach" can be used here. 
      bdRecords.Add(text.Substring(0, 3) + i.ToString("D4")); 

檢查代碼中的註釋。之後,您將收集100個格式化的字符串。然後你可以使用它來更新數據庫。