2011-08-22 20 views
9

Questo è il mio codice:aggiungere 0 prima il numero, se <10

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

Se Unreadz è inferiore a 10, voglio aggiungere un 0 prima che, prima di port.write.

Questo è quello che ho provato:

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

ma non funziona perché Unreadz è una stringa.

+0

uso del Unreadz.length, se siete interessati in lunghezza o analizza in un numero intero come Int32.Parse (unreadz) se si desidera che il valore numerico memorizzato all'interno della stringa –

risposta

2

Se il suo garantito che il valore di ritorno sarà un numero intero rappresentato come stringa, quindi è possibile convertirlo in un numero e quindi eseguire il confronto.

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

ha funzionato meglio rispetto al risposta più alta classificata ... forse a causa della mia inesperienza ... ma grazie! – Csharpz

+0

@Csharpz cura di spiegare come ha funzionato meglio? Hai ricevuto qualche errore usando il modo a una linea? –

+0

è stato un po 'ma, come ricordo, ha funzionato alla grande! :) – Csharpz

5

provare

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

In alternativa,

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

questo dovrebbe funzionare:

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

Se Unreadz è una stringa, poi confrontarlo, si dovrà convertirlo in un int.

se (Unreadz < 10) a se (Convert.ToInt16 (Unreadz) < 10)

4

Prima di tutto, Unreadz in realtà dovrebbe essere un int, non una stringa

Poi si può scrivere :

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

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

Non hai nemmeno bisogno di '.ToString()' - String.Format lo farà per te. – GalacticCowboy

0

cercare di definire int unreadz e quindi utilizzare port.Write(string.Format("{0:00}", unreadz)

1

È necessario convertire la stringa in un numero a fare il test per meno di 10:

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

Se si è certi che la stringa contenga esattamente una cifra e nient'altro, è sufficiente verificare se ha una lunghezza 1:

bool isLessThanTen = Unreadz.Length == 1; 

Si può fare la formattazione in una varietà di modi diversi:

// 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 

io preferisco la seconda perché rende il formato più chiaro e più facile da mantenere e non richiede il confronto.

Quindi, si ottiene:

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

Se si dispone di un numero intero, il metodo ToString vi aiuterà a:

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

formattato sarà si può fare questo a molti '0' come vuoi e inserisci anche caratteri extra se la tua stringa di fine è diversa:

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

volta sarà 02m03s

Problemi correlati