家庭作业与否,这里有一种方法。这是沉重影响stemas answer。它使用Regex
将数字中的字母拆分。并PadLeft
保持适当数量的前导零。
Tim Schmelters answer更加优雅,但这也适用于其他类型的产品编号,并且不限于特定数量的前导零或特定字符集。这个解决方案的缺点是它必须[按字母顺序] [数字]。
private static string Increase(string productNo)
{
// This is a regex to split it into to groups.
var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*[ _]?)(?<Numeric>[0-9]*)");
// Match the input string for the regex.
var match = numAlpha.Match(productNo);
// Get the alphabetical part.
var alpha = match.Groups["Alpha"].Value;
// Get the numeric part.
int num = int.Parse(match.Groups["Numeric"].Value);
// Add +1
num++;
// Combine the alphabetical part with the increased number, but use PadLeft to maintain the padding (leading zeros).
var newString = string.Format("{0}{1}", alpha, num.ToString().PadLeft(match.Groups["Numeric"].Value.Length, '0'));
return newString;
}
Console.WriteLine(Increase("DTS00008"));
Console.WriteLine(Increase("DTS00010"));
Console.WriteLine(Increase("DTS00020"));
Console.WriteLine(Increase("DTS00099"));
Console.WriteLine(Increase("PRODUCT0000009"));
Console.WriteLine(Increase("PRODUCT0000001"));
输出:
DTS00009
DTS00011
DTS00021
DTS00100
PRODUCT0000010
PRODUCT0000002
你尝试过这么远吗?可悲的是,我们不是您的个人代码编写服务。 – RandomStranger
您可能会先分割Alpha数字和数字(使用'string.Substring()')。使用'int.TryParse()'解析数字。添加1并重新格式化 –
它是作业... –