2011-08-22 69 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

相關問題