我有一个字符串ABC0001
我想为数据库中的每个新条目添加+1
。
如果我选择SubString(3, myStr.Length -3)
,它只会给我1
,修剪所有0(零)。
还有其他方法可以为每个新条目添加+1吗?
感谢。
答案 0 :(得分: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);
答案 1 :(得分:0)
以下是一个示例,这也可以使用正则表达式完成,以下代码可能需要进行一些调整以满足您的要求。但它会给你一条路走:
string data = "ABC0001";
string digits = new String(data.ToCharArray().Where(c => Char.IsDigit(c)).ToArray());
int num = Int32.Parse(digits);
num++;
答案 2 :(得分:0)
可以使用正则表达式完成
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
答案 3 :(得分: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());
答案 4 :(得分: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",我认为这应该是你想要的结果。
答案 5 :(得分: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();
}
答案 6 :(得分:0)
试试这个:
myStr = myStr.Substring(0, 3)
+ (Convert.ToInt32(data.Substring(3, myStr.Length -3)) + 1).ToString("0000");
我尽可能地简单明了。
答案 7 :(得分: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
希望有所帮助,
答案 8 :(得分: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个格式化的字符串。然后你可以用它来修改数据库。