Objective-C中如何将数字转为波斯语拼写文本(如125转‘صد و بیست و پنج’)
解决Objective-C中将数字转为波斯语拼写的问题
嘿,我来帮你搞定这个把数字转成波斯语文本的问题!你的现有代码思路是对的,但忽略了一个关键细节,导致无法输出目标波斯语拼写,下面给你详细说明修复方案:
核心问题分析
你用了NSNumberFormatterSpellOutStyle来让数字转为拼写文本,但NSNumberFormatter默认会使用设备的系统语言环境——如果你的设备不是波斯语环境,Formatter自然会用当前系统的默认语言(比如中文、英文)生成拼写,所以得不到你想要的“صد و بیست و پنج”。
修复方案
只需要给NSNumberFormatter指定波斯语的区域设置(Locale)就可以了,具体代码如下:
// 要转换的目标数字 NSNumber *numberValue = [NSNumber numberWithInt:125]; // 初始化NumberFormatter实例 NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; // 1. 设置波斯语区域(伊朗波斯语是通用标准,Locale标识符为fa_IR) NSLocale *persianLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"fa_IR"]; [numberFormatter setLocale:persianLocale]; // 2. 启用拼写输出样式 [numberFormatter setNumberStyle:NSNumberFormatterSpellOutStyle]; // 3. 执行转换,得到波斯语拼写文本 NSString *numberWord = [numberFormatter stringFromNumber:numberValue]; // 此时numberWord的值就是你想要的"صد و بیست و پنج"
额外小提示
- 如果需要支持阿富汗地区的波斯语(达利语),可以把Locale标识符改成
fa_AF,同样能生成对应的正确拼写文本。 - 不需要额外配置项目的本地化,只要设置了对应的Locale,NSNumberFormatter就能自动生成对应语言的拼写内容。
内容的提问来源于stack exchange,提问作者user9050369
相关产品推荐
相关产品推荐

