добавить 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);
попробовать
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));
}