2013-03-14 80 views
4

我的应用程序,由于某种原因,我有5位数字的两个数字。从字符串值的数字增量

下面的代码给你一个简单的想法。

string s = "00001"; // Initially stored somewhere. 
//Operation start 
string id = DateTime.Now.ToString("yy") + DateTime.Now.AddYears(-1).ToString("yy") + s; 
//Operation end 

//Increment the value of s by 1. i.e 00001 to 00002 

这可以轻松完成通过转换的小号价值为int和递增1,但毕竟,我也必须S的增加值存储在5位,因而这将是“ 00002“

这想给我一个痛苦...

+1

什么是你的问题? – ken2k 2013-03-14 12:29:42

+0

我不明白如果存储字符串“0000x”是一个要求或是你的痛苦。 – Larry 2013-03-14 12:35:02

回答

11

使用

string s = "00001"; 
int number = Convert.ToInt32(s); 
number += 1; 
string str = number.ToString("D5"); 

得到ATLEAST 5位。

The "D" (or decimal) format specifier

如果需要,该数被用零填充到其左侧,以产生由所述精度说明给定的位数。如果未指定 精度说明符,则缺省值是表示不带前导零的整数所需的最小值 。

+0

@peer,感谢您的编辑:) – Habib 2013-03-14 12:32:51

+1

如果爱Habibs'ansswers是错的,我不想说得对:) – 2013-03-14 13:12:13

+1

太好了你@SonerGönül – Habib 2013-03-15 04:23:20

5

这似乎适用于我。

string s = "00001"; 
int i = Int32.Parse(s); 
i++; 
s = i.ToString("D" + s.Length); 
1

所以我想你想知道如何将int转换为5位string

你可以这样做:

int i = 1; 
string s = i.ToString("D5"); 
//s = "00001" 

有很多format examples here

0

使用String.Format()来实现这一目标:

string str = String.Format({0:#####}, s); 

here

0

这个工程使用PadLeft功能:

int i = 1; // Initially stored somewhere. 
//Operation start 
string id = DateTime.Now.ToString("yy") + DateTime.Now.AddYears(-1).ToString("yy") + i.ToString().PadLeft(5, '0'); 
//Operation end