增加字符串中的数字(C#)

mor*_*pdx 1 c# string

在短划线(" - ")之后,我有一个带有数字的字符串.我想用这个数字增加1创建相同的字符串.很简单,但我想知道是否有更好的方法呢?谢谢!

string oldString = "BA-0001-3";
int lastIndex = oldString.LastIndexOf("-");
string oldNumber = oldString.SubString(lastIndex + 1);
string oldPartialString = oldString.SubString(0, lastIndex);
int newNumber = Convert.ToInt32(oldNumber) + 1;

string newString = oldPartialString + newNumber.ToString();
Run Code Online (Sandbox Code Playgroud)

gan*_*tas 7

正则表达式

例:

Regex.Replace("BA-0001-3", @"[A-Z]{2}-\d{4}-(\d+)", 
    m => (Convert.ToInt32(m.Groups[1].Value) + 1).ToString())
Run Code Online (Sandbox Code Playgroud)

  • @Ed Swangren:从目前的答案来看,当然.从之前的版本开始,只是一个脱口而出的参考 - 这对于SO来说还不够好. (5认同)
  • 没有例子,不是很有帮助. (3认同)
  • 不能要求别人自己学习东西? (3认同)

Fre*_*örk 7

我可能会用我的朋友string.Split:

string oldString = "BA-0001-3";
string[] parts = oldString.Split('-');
parts[parts.Length-1] = (Convert.ToInt32(parts[parts.Length-1])+1).ToString();
string newString = string.Join("-", parts);
Run Code Online (Sandbox Code Playgroud)

一个小的调整,可能会更快(通过只访问parts.Length和减去1一次 - 没有描述,所以它纯粹是一个猜测,它可能是一个边际差异),但最重要的是更强大(通过使用int.TryParse):

string oldString = "BA-0001-3";
string[] parts = oldString.Split('-');
int number;
int lastIndex = parts.Length-1;
parts[lastIndex] = (int.TryParse(parts[lastIndex], out number) ? ++number : 1).ToString();
string newString = string.Join("-", parts);
Run Code Online (Sandbox Code Playgroud)