Viv*_*rma 5 html culture cultureinfo circular-dependency
在我的应用程序中,我需要显示货币换算。
例如:
1 ?= 0.015 $
Run Code Online (Sandbox Code Playgroud)
同样,我想显示从 AED 到 USD 的转换。当我尝试时,转换方程会失真。
1 ?.? = 0.99 $
Run Code Online (Sandbox Code Playgroud)
符号 ?.? 是从右到左的脚本(阿拉伯语),每个字符都是从右到左的,而数字和 $ 符号是从左到右的弱,而 = 是中性的。这意味着通常可以很好地将从左到右和从右到左字符混合在一起的算法并不像我们在这里希望的那样好。
解决方案是‏ ‏在从右到左的符号之前显式地放置一个从右到左的 (U+200F, ) 并‎ ‎在它之后放置一个从左到右的标记 (U+200E, ):
$1 = 3.67‏?.?‎
Run Code Online (Sandbox Code Playgroud)
结果:
$1 = 3.67??.??
Run Code Online (Sandbox Code Playgroud)
(严格来说,我们不需要‏before 因为从右到左的性质对我们来说是这样的,但在这两种情况下都更简单)。
这仅在 $ 含义明确的上下文中才有意义;由于比索/美元/埃斯库多符号用于 31 种有效货币和大量历史货币,因此通常最好使用 ISO 4217 代码而不是符号:
1 USD = 3.67 AED
Run Code Online (Sandbox Code Playgroud)
这还有一个优点,即不需要计算哪些货币需要明确的 ltr 和 rtl 标记,也不必存储哪些货币将符号放在数字之前和之后,因为 ISO 4217 代码总是在数字之后。