2011-08-22 20 views
9

这是我的代码:号码前加0,如果<10

string Unreadz = "0"; 
while (true) 
{ 
    Unreadz = CheckMail();  
    if (!Unreadz.Equals("0")) port.Write("m"); 
    else port.Write("n"); 
} 

如果Unreadz小于10,我想在它之前添加0port.write之前。

这是我曾尝试:

if (Unreadz < 10) port.Write("0" + Unreadz); 
else port.Write("" + Unreadz); 

,但它不工作,因为Unreadz是一个字符串。

+0

使用Unreadz.length如果你有兴趣的长度或解析它像Int32.Parse(unreadz)一个整数,如果你想存储的字符串 –

回答

2

如果它保证了返回值将被表示为字符串一个整数,那么你可以将其转换为一个数字,然后进行比较。

if (Convert.ToInt32(Unreadz) < 10) port.Write("0" + Unreadz); 
else port.Write("" + Unreadz); 
+1

内的数值比工作更好排名更高的答案......也许是因为我的经验不足......但谢谢! – Csharpz

+0

@Csharpz谨慎解释它如何更好地工作?您是否使用单线路发生任何错误? –

+0

它已经有一段时间了,但据我记得它效果很好! :) – Csharpz

5

尝试

if (Convert.ToInt32(Unreadz) < 10) port.Write(string.format("{0}{1}", "0", Unreadz); 

另外,

if (Unreadz.length == 1) ... 
20

这应该工作:

port.Write(Unreadz.ToString().PadLeft(2, '0')); 
0

如果Unreadz是一个字符串,然后比较一下,你就必须把它转换为int。

如果(Unreadz < 10) 到 如果(Convert.ToInt16(Unreadz)< 10)

4

首先,Unreadz确实应该是int,而不是字符串

然后,你可以写:

 int Unreadz; 
     while (true) 
     { 
      Unreadz = CheckMail(); //Change this to return an int 

      string formattedNumber = String.Format("{0:##}", Unreadz.ToString()); 
      port.Write(formattedNumber); 
     } 
+0

你甚至不需要'.ToString()' - String.Format会为你做这个。 – GalacticCowboy

0

尝试定义int unreadz然后用port.Write(string.Format("{0:00}", unreadz)

1

您需要将字符串转换为一个数字,以不到10做了测试:

// this will throw an exception if the string does not contain a number 
int unreadzNumber = int.Parse(Unreadz); 

如果您确定该字符串只包含一个数字而没有其他字符,您可以测试它是否具有长度1:

bool isLessThanTen = Unreadz.Length == 1; 

你可以在各种不同的方式格式化:

// 1: just stick a zero before it 
string formatted = string.Format("0{0}", unreadzNumber); 
// 2: use a special format string to use at least two digits 
string formatted = string.Format("{0:00}", unreadzNumber); 
// 3: pad the string with zeros to the left 
string formatted = Unreadz.PadLeft(2, '0'); 
// 4: manually concatenate with "0" 
string formatted = "0" + Unreadz; 
// and probably others 

我更喜欢第二个,因为它使格式更清晰,更易于维护,并且不需要比较。

所以,你会得到:

string Unreadz = "0"; 
    while (true) 
    { 
     Unreadz = CheckMail();  
     int unreadzNumber = int.Parse(Unreadz); 
     port.Write(string.Format("{0:00}", unreadzNumber)); 
    } 
2

如果你有一个整数,ToString方法将帮助您:

int i = 5; 
string formatted = i.ToString("00"); 

格式化会 你可以尽可能多的做'0',如果您的结束字符串不同,则还会放置额外的字符:

int minutes = 2, seconds = 3; 
int timeSum = minutes * 100 + seconds; 
string time = timeSum.ToString("00m00s"); 

时间将02m03s

相关问题