Tôi có mã tiền tệ (Ví dụ: USD, EUR, INR) từ phản hồi webservice. Tôi cần hiển thị ký hiệu tiền tệ cho mã tiền tệ tương ứng. Nếu mã tiền tệ là USD, tôi cần hiển thị $, nếu mã tiền tệ là EUR tôi cần phải hiển thị €. Tôi có thể làm cái này như thế nào? Vui lòng đề xuất bất kỳ ý tưởng hoặc mã mẫu nào để thực hiện việc này. Làm ơn giúp tôi. Cảm ơn trước.Tôi có thể lấy biểu tượng tiền tệ từ mã tiền tệ trong iphone bằng cách nào?
Trả lời
Mã này hoạt động quyến rũ trong dự án của tôi. Tôi sẽ chia sẻ điều này cho tất cả các bạn.
NSString *currencyCode = @"EUR";
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:currencyCode] autorelease];
NSString *currencySymbol = [NSString stringWithFormat:@"%@",[locale displayNameForKey:NSLocaleCurrencySymbol value:currencyCode]];
NSLog(@"Currency Symbol : %@", currencySymbol);
Cảm ơn.
NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
này là dành cho Mỹ phong cách tệ
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
//[numberFormatter setCurrencySymbol:@"Rs"];
[numberFormatter setNumberStyle:@"en_IN"];
này là dành cho Ấn Độ
Cảm ơn bạn đã trả lời. Bạn có thể cho tôi biết rõ ràng không? Tôi không hiểu câu trả lời của bạn. Đừng nhầm tôi. Cảm ơn. –
Mã này là những gì bạn đang tìm kiếm mặc dù không phải là rất hiệu quả vì vòng lặp cho miền địa phương. Tuy nhiên, nó hoạt động chính xác cho tất cả mã tiền tệ, không chỉ cho eur hoặc usd. Hy vọng điều này sẽ giúp bạn.
- (NSLocale *) findLocaleByCurrencyCode:(NSString *)_currencyCode
{
NSArray *locales = [NSLocale availableLocaleIdentifiers];
NSLocale *locale = nil;
for (NSString *localeId in locales) {
locale = [[[NSLocale alloc] initWithLocaleIdentifier:localeId] autorelease];
NSString *code = [locale objectForKey:NSLocaleCurrencyCode];
if ([code isEqualToString:_currencyCode])
break;
else
locale = nil;
}
return locale;
}
- (NSString *)findCurrencySymbolByCode:(NSString *)_currencyCode
{
NSNumberFormatter *fmtr = [[NSNumberFormatter alloc] init];
NSLocale *locale = [self findLocaleByCurrencyCode:_currencyCode];
NSString *currencySymbol;
if (locale)
[fmtr setLocale:locale];
[fmtr setNumberStyle:NSNumberFormatterCurrencyStyle];
currencySymbol = [fmtr currencySymbol];
[fmtr release];
if (currencySymbol.length > 1)
currencySymbol = [currencySymbol substringToIndex:1];
return currencySymbol;
}
Sử dụng nó theo cách này:
NSString *currencySymbol = [self findCurrencySymbolByCode:currencyCode];
Mã này có một số sai sót khó chịu: Nếu 'NSNumberFormatter' quyết định không đặt ký hiệu tiền tệ đầu tiên ở đầu ra, bạn sẽ nhận được kết quả không chính xác. Nếu ký hiệu tiền tệ xảy ra để chiếm nhiều hơn một điểm mã UTF-16, nó sẽ bị cắt nhỏ và không hợp lệ –
Cải thiện nó và cho phép người khác sử dụng. Không phải là trang web này về điều đó?) và cảm ơn. –
Thật vậy. Câu trả lời được cải thiện đã được đăng. –
NSLocale
hạnh phúc sẽ cho bạn biết ký hiệu tiền tệ được sử dụng bởi một địa phương cụ thể:
[locale objectForKey:NSLocaleCurrencySymbol];
Nó cũng sẽ cho bạn biết mã tiền tệ:
[locale objectForKey:NSLocaleCurrencyCode];
Vì vậy, tất cả những gì bạn phải làm bây giờ là tra cứu ngôn ngữ tương ứng với một mã đã cho. Không có phương pháp tích hợp (mà tôi biết) để làm điều này trực tiếp, vì vậy hãy lặp qua tất cả các ngôn ngữ đã biết và chọn một ngôn ngữ phù hợp. @ Umka's answer có một ví dụ điển hình về phương pháp này theo phương pháp -findLocaleByCurrencyCode:
.
Bạn có thể tối ưu hóa quy trình bằng cách tạo bảng tra cứu của riêng mình, thay vì lặp lại qua tất cả các ngôn ngữ mỗi lần. Bạn có thể cần phải xử lý khả năng của mã tiền tệ trùng lặp quá, mà sẽ đòi hỏi một số heuristic để quyết định đó là miền địa phương có khả năng nhất.
NSNumberFormatter * formatter = [NSNumberFormatter new];
formatter.numberStyle = NSNumberFormatterCurrencyStyle;
NSString * localeIde = [NSLocale localeIdentifierFromComponents:@{NSLocaleCurrencyCode: currencyCode}];
formatter.locale = [NSLocale localeWithLocaleIdentifier:localeIde];
NSString * symbol = formatter.currencySymbol;
Xây dựng trên mã từ @Mike Abdullah và @Umka, dưới đây là một số chức năng trong Swift.
func findCodeAndSymbolForAllLocales() {
let locales = NSLocale.availableLocaleIdentifiers()
for localeId in locales {
let locale = NSLocale(localeIdentifier: localeId)
if let code = locale.objectForKey(NSLocaleCurrencyCode) as? String,
let symbol = locale.objectForKey(NSLocaleCurrencySymbol) {
print("\(code) \(symbol)")
}
}
}
func findCurrencySymbolByCode(currencyCode:String) -> String? {
guard let locale = findLocaleByCurrencyCode(currencyCode) else {
print("locale for \(currencyCode) is nil")
return nil
}
return locale.objectForKey(NSLocaleCurrencySymbol) as? String
}
func findLocaleByCurrencyCode(currencyCode:String) -> NSLocale? {
let locales = NSLocale.availableLocaleIdentifiers()
var locale:NSLocale?
for localeId in locales {
locale = NSLocale(localeIdentifier: localeId)
if let code = locale!.objectForKey(NSLocaleCurrencyCode) as? String {
if code == currencyCode {
return locale
}
}
}
return locale
}
Swift 4 phiên bản
Tìm locale bởi mã tiền tệ:
let localeGBP = Locale
.availableIdentifiers
.map { Locale(identifier: $0) }
.first { $0.currencyCode == "GBP" }
print(localeGBP?.currencySymbol) // £
Định dạng tiền tệ
if let locale = localeGBP {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.locale = locale
let result = formatter.string(from: 100000) // £100,000.00
}
Swift
let locale = NSLocale(localeIdentifier: currencyCode)
let currencySymbol = locale.displayName(forKey: .currencySymbol, value: currencyCode) ?? currencyCode
print("Currency symbol: \(currencySymbol)")
- 1. NSNumberFormatter Tiền tệ Không có Biểu tượng?
- 2. nhận CultureInfo từ Mã tiền tệ?
- 3. Mã đơn vị tiền tệ để lập bản đồ ký hiệu tiền tệ
- 4. Định dạng tiền tệ không có ký hiệu tiền tệ
- 5. Java: Ký hiệu tiền tệ dựa trên mã số tiền tệ ISO 4217
- 6. Lấy mã đơn vị tiền tệ của một quốc gia
- 7. mã quốc gia django Mã tiền tệ
- 8. Chuyển đổi tiền tệ
- 9. mysql chọn int là tiền tệ hoặc chuyển đổi int sang định dạng tiền tệ?
- 10. Bộ lọc tiền tệ góc - Biểu tượng được thêm
- 11. Magento đa đa tiền tệ
- 12. Danh sách tiền tệ ISO
- 13. Định dạng tiền tệ MVC
- 14. C# Tiền tệ thành chuỗi
- 15. Chuỗi tiền tệ định dạng
- 16. Chuỗi định dạng tiền tệ trong asp.net
- 17. Địa phương hóa đơn vị tiền tệ cho iPhone
- 18. Làm thế nào tôi có thể tìm ra biểu tượng đơn vị tiền tệ phụ (đơn vị nhỏ) trong Java?
- 19. Định dạng số thập phân làm đơn vị tiền tệ dựa trên mã đơn vị tiền tệ
- 20. Đơn vị tiền tệ trong JavaScript
- 21. Cách tìm mã html cho một loại tiền tệ?
- 22. Cài đặt đơn vị tiền tệ với biểu mẫu được chọn bằng Đá quý tiền
- 23. Java String.format với ký hiệu tiền tệ
- 24. Django: FloatField hoặc DecimalField cho tiền tệ?
- 25. Trích xuất đơn vị tiền tệ từ số tiền được định dạng
- 26. Vị trí ký hiệu tiền tệ trong các chuỗi .NET
- 27. Thư viện tiền tệ cho Java
- 28. Hoạt động tiền tệ với javaScript?
- 29. HTML 5 Định dạng tiền tệ
- 30. Kendo UI Định dạng tiền tệ
Tôi không nghĩ mã này hoạt động như mong muốn.Nó cho thấy các ký hiệu tiền tệ chính xác chỉ cho eur và usd. Đối với tất cả các loại tiền tệ khác, nó hiển thị ký tự đầu tiên cho mã tiền tệ. –
Mã này có vẻ huyền diệu, không rõ tại sao nó làm những gì nó đang làm. Nếu bạn thay đổi dòng thứ ba để nó in '[locale objectForKey: NSLocaleCurrencySymbol]', đầu ra sẽ in 'Ký hiệu tiền tệ: ¤'. – dteoh
mã này hoạt động đúng với EUR và USD, những mã khác không hoạt động tốt đối với tôi. –