2013-01-09 9 views
7

पर कॉमा के साथ अलग संख्या मेरे पास एक एनएसआईएनटेगर (मूल्य 60000 के साथ कहें), जब मैं को स्ट्रिंग करने के लिए परिवर्तित करता हूं, तो मैं "60000" के के बजाय "60,000" प्राप्त करना चाहता हूं। क्या ऐसा करने के लिए कोई तरीका है? धन्यवाद।स्ट्रिंग आईओएस

+0

http://stackoverflow.com/questions/2233824/how-to-add-commas-to-number-every-3-digits-in-objective-c – Nazir

उत्तर

18

एक नंबर फ़ॉर्मेटर का उपयोग करें:

NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init]; 
[fmt setNumberStyle:NSNumberFormatterDecimalStyle]; // to get commas (or locale equivalent) 
[fmt setMaximumFractionDigits:0]; // to avoid any decimal 

NSInteger value = 60000; 

NSString *result = [fmt stringFromNumber:@(value)]; 
+0

हाय के साथ डुप्लीकेट, आपके उत्तर के लिए धन्यवाद। यह काम करता हैं। हालांकि दो छोटे प्रश्न। मुझे यह "लोकेल" हर समय उल्लेख किया जा रहा है, वैसे भी क्या है? और, आपके दृष्टिकोण में, यह कैसे पता चलता है कि उदाहरण के लिए 2 के बजाय, प्रत्येक 3 अंकों के बाद इसे अल्पविराम निर्धारित करना चाहिए? और अंत में, क्या यह आईओएस 4.3 के लिए भी काम करेगा? धन्यवाद। – user1903992

+1

लोकेल के विवरण के लिए 'NSLocale' के लिए दस्तावेज़ देखें। संक्षेप में यह दुनिया भर में भाषा और स्वरूपण मतभेदों से संबंधित है। कुछ देश 600000 के रूप में 600,000 दिखाएंगे। कुछ इसे 600.000 या 600 000 के रूप में दिखाएंगे। मेरा उत्तर 2.0 के बाद से आईओएस के सभी संस्करणों के लिए लागू होता है। 'NSNumberFormatter' के लिए दस्तावेज़ देखें - विशेष रूप से समूह से संबंधित। डिफ़ॉल्ट 3 अंक है। – rmaddy

+0

आपकी प्रतिक्रिया के लिए धन्यवाद। (यद्यपि यहां छोटे उत्तर सबमिट नहीं कर सकते हैं :))। – user1903992

2

इस प्रयास करें,

NSString *numString = [NSString stringWithFormat:@"%d,%d",num/1000,num%1000]; 
+0

यह उन स्थानीय लोगों के लिए मान्य नहीं है जो अन्य स्वरूपण का उपयोग करते हैं और यह बड़ी संख्याओं (या छोटी संख्याओं) को संभाल नहीं पाएगा। – rmaddy

+0

@rmaddy ठीक है .. धन्यवाद और आपके उत्तर के लिए +1 ... :) –

3

आप एक नंबर फ़ॉर्मेटर का उपयोग कर सकते हैं: एक स्थानीय करने के लिए संख्यात्मक डेटा फ़ॉर्मेट करने के लिए

NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle]; 
NSString *numberString = [numberFormatter stringFromNumber: [NSNumber numberWithInteger: i]]; 
-1

उपयोग NSNumberFormatter स्ट्रिंग प्रतिनिधित्व।

int aNum = 60000; 
NSString *display = [NSNumberFormatter localizedStringFromNumber:@(aNum) 
                numberStyle:NSNumberFormatterCurrencyStyle]; 

ऐसा करने पर, आप मिल जाएगा '$ 60,000.00'

उसके बाद, आप $ और के हस्ताक्षर को हटा सकते हैं '।' (दशमलव) ऐसा करके ..

NSString *Str = [display stringByReplacingOccurrencesOfString:@"$" withString:@""]; 

NSString *Str1 = [Str stringByReplacingOccurrencesOfString:@"." withString:@""]; 

NSString *newString = [Str1 substringToIndex:[Str1 length]-1]; 

NSString *newString1 = [newString substringToIndex:[newString length]-1]; 

'newString1' आपको आवश्यक परिणाम देगा।

+1

यह कोड अत्यधिक जटिल है और यह कई मामलों में विफल हो जाएगा। यह '$' के अलावा मुद्रा चिह्न का उपयोग कर लोकेशंस के लिए काम नहीं करेगा। यह उन स्थानों के लिए भी विफल रहता है जो '.' के अलावा दशमलव विभाजक का उपयोग करते हैं। यह उन स्थानीय लोगों के लिए भी विफल रहता है जो मुद्रा के लिए 2 दशमलव स्थानों का उपयोग नहीं करते हैं। – rmaddy

+0

@rmaddy कि कोड केवल इस विशेष स्थिति के लिए है ..... –

+0

इसका क्या अर्थ है? क्या स्थिति? क्या आप प्रस्ताव दे रहे हैं कि उत्तर सभी अलग-अलग स्थानों को संभालने के लिए कोड का एक पूरा सेट लिखना है? – rmaddy