добавить 0 перед номером, если

это мой код:

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

если Unreadz меньше 10, Я хочу добавить 0 перед ним, перед port.write.

это то, что я пробовал:

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

но это не работает, потому что Unreadz - это строка.

9 ответов


Если гарантируется, что возвращаемое значение будет целым числом, представленным в виде строки, то вы можете преобразовать его в число, а затем выполнить сравнение.

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

Это должно работать:

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

попробовать

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

кроме того,

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

прежде всего,Unreadz действительно должен быть int, а не string

тогда вы можете написать:

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

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

string.Format("{0:00}", 9);

см. также http://msdn.microsoft.com/en-us/library/0c899ak8 (v=VS.71).aspx

более непосредственно вы можете:

  9.ToString("00"); // "09"
 19.ToString("00"); // "19"
119.ToString("00"); // "119"

Если у вас есть целое число, метод toString поможет вам:

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

форматированный будет 05 вы можете сделать это для столько "0" , сколько хотите, а также поставить дополнительные символы, если ваша конечная строка отличается:

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

время будет 02m03s


нужно преобразовать строку в число, не менее 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));
    }

Если Unreadz-это строка, то для ее сравнения вам придется преобразовать ее в int.

if (Unreadz


попытаться определить int unreadz и затем использовать port.Write(string.Format("{0:00}", unreadz)