class Program { static void Main(string[] args) { Console.WriteLine(IncreaseOne("1631.10.002")); Console.WriteLine(IncreaseOne("5465.5121.85.215")); Console.WriteLine(IncreaseOne("123")); Console.Read(); } private static string IncreaseOne(String num) { string[] strs = num.Split('.'); if (strs.Length > 1) { string temp = strs[strs.Length - 1]; int len = temp.Length; int lastNum = Convert.ToInt32(temp) + 1; strs[strs.Length - 1] = lastNum.ToString().PadLeft(len, '0'); } else { strs[strs.Length - 1] = (Convert.ToInt32(strs[strs.Length - 1]) + 1).ToString(); } string result = string.Empty; foreach (string str in strs) { if (result.Length == 0) result += str; else result = result + ("." + str); } return result; } }
结果
太谢谢你了,这就是我想要的。但是我有个疑问
string result = string.Empty;
foreach (string str in strs)
{
if (result.Length == 0)
result += str;
else
result = result + ("." + str);
}
那个if(result.Length==0)的判断可不可以不要呢?因为我们定义的result本来就是string.empty?这里我没看懂。
还有我现在担心的一个问题是当客户一次性著录的数据较多时,1631.10.003最后的一部分一直增加到1631.10.009的时候再增加一条,按照上面的思路是不是变成了1631.10.0010;但是最后想要的结果是1631.10.010.谢谢师父
嘿嘿,我读懂了。(1)那个对result判断是有用的,针对于dh=123 的情况。(2)上面的PadLeft()方法就是解决那个对齐的问题,可以确保1631.10.010的结果。
哈哈,太开心了!我把这段代码做了笔记了。再次感谢!
@pengjw:
1、if(result.Length==0)这个判断是因为1631.10.002拆开的时候为1631和10和0023个字符串,最后合并的时候第一个1631前面不需要加"."...
2、结果会是1631.10.010 ,最后一位的长度由此语句实现.PadLeft(len, '0');之前已经记录了len长度为3,所以结果不会是0010
txtDH.substring(txtDH.lastIndex('.')+1)
嘿嘿,谢谢哦!
在吗?你教我的方法可以。我想实现这样的,
string txtDH=1631.10.002,因为是字符变量,我没法直接加1,所以截取最后的一部分加1,然后能返回txtDH= 1631.10.002,我该怎么弄呢?
int index=txtDH.lastIndexOf(".")你看看对不对吧,好像是这样用的
嗯,谢谢,得用substring函数的