在我的应用程序中,我需要显示货币转换。
例如:
1 ₹= 0.015 $
同样,我想显示从AED到USD的转换。当我尝试时,转换方程变得失真。
1 د.إ = 0.99 $
答案 0 :(得分:4)
符号د.إ是一个从右到左的脚本(阿拉伯语),每个字符都是从右到左,而数字和$符号从左到右依次为弱,=是中性的。这意味着通常很好地将从左到右和从右到左的字符混合在一起的算法并没有像我们希望的那样好。
解决方案是在从右到左的符号和从左到右的标记(U +)之前明确地设置从右到左(U + 200F,‏
‏
) 200E,‎
‎
)之后:
$1 = 3.67‏د.إ‎
结果:
$1 = 3.67د.إ
(严格来说,我们之前不需要‏
,因为强烈的从右到左的性质对我们来说就是这样,但在两种情况下都更为明确。)
这只有在$的含义明确的情况下才有意义;由于比索/美元/埃斯库多标志用于31种活跃货币和许多历史货币,因此通常最好使用ISO 4217代码而不是符号:
1 USD = 3.67 AED
这也有一个好处,就是不需要确定哪些货币需要明确的ltr和rtl标记,也不必存储哪些货币将符号放在数字之前以及之后,因为ISO 4217代码总是在数字之后