每当需要时,我都会在应用程序中编写和使用这段代码,以便将任何波斯文本中的西方阿拉伯数字转换为东阿拉伯数字(或者更好地说,波斯语/波斯语)。
它运行得很好,但我现在正在查看它以重用它,我想知道我是否可以优化它以减少重复的代码行,如果可以的话,如何实现呢?
头文件FarsiNumerals.h:
和实现文件FarsiNumerals.m:
正如您所看到的,这是一段简单的代码;我会在需要的地方调用该方法,它会为我替换正确的数字,以优化文本显示的目的,我想知道是否可以以某种方式使其更短?
简单的音译可能是不够的。例如,我知道美式英语10,000.00应该是۱۰٬۰۰۰٫۰۰,但是您可能不想在整个文本中替换所有,和.,而只是在数字的上下文中。(如果我们转向其他语言,问题就会变得更加复杂,因为他们甚至可能每隔三位数就不使用分组分隔符。)
这就是使用数字格式化程序的方式:
而且,如果完全省略locale,它默认为用户当前的区域设置(因此日本用户看到日语,中国用户看到中文,等等)。这也处理特定地区特有的千分之一和十进制分隔符(例如,对于numberStyle of NSNumberFormatterDecimalStyle,对于1234.56,英语用户可以看到“1,234.56”,而德国用户可以看到“1.234,56”。
FYI,您也可以更改numberStyle属性以其他格式显示它,例如NSNumberFormatterSpellOutStyle。
在这种情况下,我想提出的一个建议是,对于阿拉伯数字和波斯语数字之间的每一个翻译定义,可能都有相当于字典(或散列图)的内容。
循环遍历这些元素中的任何一个元素肯定会使代码更加简洁,尽管我不完全确定它是否会减少任何使用的空间。
一般来说,将这个简单的转换问题转换成一个散列图,可以让它清楚地知道代码在做什么以及它是如何工作的。