如何在Objective-C中将字符串中的英文数字转换为波斯语/阿拉伯语数字? [英] How to convert english numbers inside a string to Persian/Arabic numbers in Objective-C?

查看:26
本文介绍了如何在Objective-C中将字符串中的英文数字转换为波斯语/阿拉伯语数字?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个英文字符串,可能有也可能没有数字.但我希望这些数字作为波斯数字打印在屏幕上.

I have an english string that may or may not have numbers. But i want those numbers to be printed on screen as Persian numbers.

例如如果 NSString *foo = @"a string with numbers 1 2 3;"

然后输出应该是一个带有数字的字符串 ۱۲۳

我现在使用的代码是:

-(NSString *)convertEnNumberToFarsi:(NSString *) number{
    NSString *text;
    NSDecimalNumber *someNumber = [NSDecimalNumber decimalNumberWithString:number];
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    NSLocale *gbLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fa"];
   [formatter setLocale:gbLocale];
   text = [formatter stringFromNumber:someNumber];
   return text;
}

这个方法只转换一个只有数字的字符串,但如上所述,我想转换任何可能有也可能没有数字的字符串.

This method only converts a string that is only in numbers, but as mentioned above i want to convert any string that may or may not have numbers in it.

我怎样才能做到这一点?

How can i achieve this?

推荐答案

简单的方法:

NSDictionary *numbersDictionary = @{@"1" : @"۱", @"2" : @"۲", @"3" : @"۳", @"4" : @"۴", @"5" : @"۵", @"6" : @"۶", @"7" : @"۷", @"8" : @"۸", @"9" : @"۹",@"0" : @"٠"};
for (NSString *key in numbersDictionary) {
  str = [str stringByReplacingOccurrencesOfString:key withString:numbersDictionary[key]];
}

其他更灵活的语言环境解决方案:

Other solution more flexible with locale:

NSNumberFormatter *formatter = [NSNumberFormatter new];
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"ar"];
for (NSInteger i = 0; i < 10; i++) {
  NSNumber *num = @(i);
  str = [str stringByReplacingOccurrencesOfString:num.stringValue withString:[formatter stringFromNumber:num]];
}

注意:此代码未使用IDE编写,可能存在语法错误.

这篇关于如何在Objective-C中将字符串中的英文数字转换为波斯语/阿拉伯语数字?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆