gpt4 book ai didi

c# - 使用某些货币符号时自定义数字格式和字符串替换期间的意外结果

转载 作者:太空宇宙 更新时间:2023-11-03 16:46:17 24 4
gpt4 key购买 nike

我要求按以下格式显示所有货币:

"[Code] [Symbol]#,##0.00;[Code] [Symbol](#,##0.00)"

用户将选择一个国家,我从外部服务获取货币代码和符号。然后我使用 string.replace 将货币代码和符号设置为上面的格式字符串。

因此值 123.456(美元)的格式如下:

"USD $123.46"

此方法适用于大多数货币符号,但我对科威特 د.ك 的货币符号有疑问。我似乎无法格式化任何值以允许符号出现在数字之前。我对字母没有同样的问题。我认为这与阿拉伯语是从右向左书写的事实有关。该符号甚至在浏览器中也是如此。我不能从左到右选择它,选择从右边开始。此外,当我在 linqpad 中进行测试时,我的字符串显示为 [Kuwait_Symbol]#,##0.00,但是在 stackoverflow 文本框中粘贴导致字符串为 د.ك#,## 0.00

请注意,字符串中字符的顺序已更改。

不过,我觉得我不得不建议使用符号是不可行的,有什么办法可以解决这个问题吗?还有,为什么符号不能显示在数字前?

最佳答案

问题源于浏览器以及它们如何处理从右到左语言中的字符,而不是生成它们的代码。如果你尝试

var kuwaitCulture = new System.Globalization.CultureInfo("ar-KW");
Response.Write(Server.UrlEncode(amount.ToString("c", kuwaitCulture)));

您会看到返回的内容在金额之前清楚地显示了 CurrencySymbol。

要解决此问题,您可以使用相应的 Unicode 字符在浏览器中强制进行从左到右的呈现。例如,

Response.Write('\u202A' + kuwaitCulture.NumberFormat.CurrencySymbol + '\u202C' + amount);

根据您的规范正确呈现。

关于c# - 使用某些货币符号时自定义数字格式和字符串替换期间的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com