2013-01-09 41 views
7

Tôi có NSInteger (nói với giá trị 60000), khi tôi chuyển đổi thành chuỗi, tuy nhiên, tôi muốn nhận "60.000" thay vì của "60000". Có một số phương pháp để làm điều đó? Cảm ơn.Số riêng biệt bằng dấu phẩy trên chuỗi iOS

+0

được sao chép bằng http://stackoverflow.com/questions/2233824/how-to-add-commas-to-number-every-3-digits-in-objective-c – Nazir

Trả lời

18

Sử dụng một định dạng số:

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

Xin chào, cảm ơn bạn đã trả lời. Nó hoạt động. Hai câu hỏi nhỏ mặc dù. Tôi thấy điều này "địa phương" được đề cập tất cả các thời gian, nó là gì không? Và cũng có thể, trong cách tiếp cận của bạn, làm thế nào nó biết rằng nó nên đặt dấu phẩy sau mỗi 3 chữ số, thay vì 2 ví dụ? và cuối cùng, nó cũng sẽ hoạt động cho iOS4.3? Cảm ơn. – user1903992

+1

Xem tài liệu cho 'NSLocale' để biết mô tả ngôn ngữ. Trong ngắn hạn nó đề cập đến ngôn ngữ và định dạng sự khác biệt trên toàn thế giới. Một số quốc gia sẽ hiển thị 600000 là 600.000. Một số sẽ hiển thị nó là 600.000 hoặc 600 000. Câu trả lời của tôi áp dụng cho tất cả các phiên bản iOS kể từ 2.0. Xem tài liệu cho 'NSNumberFormatter' - đặc biệt là những tài liệu liên quan đến nhóm. Mặc định là 3 chữ số. – rmaddy

+0

Cảm ơn bạn đã trả lời. (Không thể gửi câu trả lời ngắn ở đây mặc dù :)). – user1903992

2

Hãy thử điều này,

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

Điều này không hợp lệ cho các ngôn ngữ sử dụng định dạng khác và nó sẽ không xử lý số lớn hơn (hoặc số nhỏ hơn). – rmaddy

+0

@rmaddy Ok .. Cảm ơn và +1 cho câu trả lời của bạn ... :) –

3

Bạn có thể sử dụng một định dạng số:

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

Sử dụng NSNumberFormatter để định dạng dữ liệu số để một cục biểu diễn chuỗi.

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

On làm điều này, bạn sẽ nhận được '$ 60,000.00'

sau đó, bạn có thể loại bỏ các dấu hiệu của sự và $ '' (thập phân) bằng cách làm này ..

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' sẽ cung cấp cho bạn kết quả được yêu cầu.

+1

Mã này quá phức tạp và sẽ thất bại trong nhiều trường hợp. Điều này sẽ không hoạt động đối với các ngôn ngữ sử dụng ký hiệu tiền tệ khác với '$'. Nó cũng không thành công cho các miền địa phương sử dụng dấu tách thập phân ngoài '.'. Nó cũng không thành công cho các ngôn ngữ không sử dụng 2 chữ số thập phân cho tiền tệ. – rmaddy

+0

@rmaddy mã đó chỉ dành cho tình huống cụ thể này ..... –

+0

Điều đó có nghĩa là gì? Tình huống gì? Bạn đang đề xuất rằng câu trả lời là viết toàn bộ mã để xử lý tất cả các ngôn ngữ khác nhau? – rmaddy

Các vấn đề liên quan