2011-08-22 12 views
9

यह मेरा कोड है:अगर <10

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

तो Unreadz10 तुलना में कम है, मैं port.write इससे पहले कि यह पहले एक 0 जोड़ने के लिए, चाहते हैं।

यह है कि मैं क्या करने की कोशिश की है:

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

लेकिन यह काम नहीं करता क्योंकि Unreadz एक श्रृंखला है।

+0

उपयोग अगर आप चाहते हैं स्ट्रिंग –

उत्तर

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 एक स्ट्रिंग है, तो यह तुलना करने के लिए, आप इसे एक पूर्णांक में कन्वर्ट करने के लिए होगा।

अगर (Unreadz < 10) के लिए अगर (Convert.ToInt16 (Unreadz) < 10)

4

सबसे पहले, Unreadz वास्तव में एक पूर्णांक, नहीं एक स्ट्रिंग होना चाहिए

तो फिर तुम लिख सकते हैं :

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

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

आपको 'टॉस्ट्रिंग() '- स्ट्रिंग.फॉर्मैट भी आपके लिए यह नहीं करेगा। – 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"); 
01 यदि आप लंबाई में रुचि रखते हैं या Int32.Parse (unreadz) की तरह एक पूर्णांक के लिए उसे पार्स

समय Unreadz.length हो जाएगा 02m03s

संबंधित मुद्दे