当前位置: 首页 > 编程语言 > C#

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

时间:2023-04-11 12:08:23 C#

C#学习教程:自增字符串中的数字(C#)我想创建相同的字符串,将数字加1,非常简单,但我想知道是否有更好的方法来做到这一点?谢谢!字符串oldString="BA-0001-3";intlastIndex=oldString.LastIndexOf("-");字符串oldNumber=oldString.SubString(lastIndex+1);字符串oldPartialString=oldString.SubString(0,lastIndex);intnewNumber=Convert.ToInt32(oldNumber)+1;字符串newString=oldPartialString+newNumber.ToString();我可能会使用我的朋友string.Split:stringoldString="BA-0001-3";string[]parts=oldString.Split('-');零件[零件.长度-1]=(Convert.ToInt32(零件[零件.长度-1])+1).ToString();stringnewString=string.Join("-",parts);一个小的调整,可能更快(通过访问parts.Length并只减去1一次-没有描述,所以这纯粹是一个猜测,它可能是一个边际差异,但最重要的是更健壮(通过使用int.TryParse):stringoldString=“BA-0001-3”;string[]parts=oldString.Split('-');intnumber;intlastIndex=parts.Length-1;parts[lastIndex]=(int.TryParse(parts[lastIndex],outnumber)?++number:1).ToString();stringnewString=string.Join("-",parts);正则表达式?示例:Regex.Replace("BA-0001-3",@"[AZ]{2}-d{4}-(d+)",m=>(Convert.ToInt32(m.Groups[1].Value)+1).ToString())根据AhmadMageed的评论在下面更新,这是他的回答,远远领先于我当前的回答:-)我会按照你现在的方式去做,但只是为了好玩,我想知道我是否可以用linq.varx="BA-0001-3".Split('-');vary=x.First()+"-"+x.ElementAt(1)+"-"+(Convert.ToInt32(x.Last())+1);这适用于LINQPad。编辑:显然我不是linqpro。希望得到其他关于如何改进的答案/评论。这是一个如何使用RegEx完成的示例:publicvoidTest(){System.Text.RegularExpressions.Regexrx=newRegex(@"(?.*-)(?d+)");字符串输入=“BA-0001-3”;字符串输出=string.Empty;整数数字=0;if(int.TryParse(rx.Replace(input,"${digit}"),outdigit)){output=rx.Replace(input,"${prefix}"+(digit+1));}Console.WriteLine(输出);使用正则表达式(现在似乎已经填写了更多细节)我最终得到这样的结果:varregex=newRegex(@"^(?[A-Za-z]{1,2})-(?[0-9]{4})-(?[0-9]+)$");varnewCode=regex.Replace("BA-0001-3",newMatchEvaluator(ReplaceWithIncrementedNumber));MatchEvaluator函数的位置是:publicstaticstringReplaceWithIncrementedNumber(Matchmatch){Debug.Assert(match.Success);varnumber=Int32.Parse(match.Groups["Number"].Value);returnString.Format("{0}-{1}-{2}",match.Groups["Category"].Value,match.Groups["Code"].Value,number+1);下面是一个公开“部件号”的三个部分的类的示例。不是特别花哨(还要注意没有错误检查/验证)。以上就是C#学习教程的全部内容:增加字符串中的数字(C#)。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注—classProgram{staticvoidMain(string[]args){PartNumberp1=newPartNumber("BA-0001-3");for(inti=0;i本文搜集自网络,不代表立场,如涉及侵权,请点右联系管理员删除。如需转载,请注明出处:

最新推荐
猜你喜欢