You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:39:26