使用 string.Format 和 unicode 信息

Using string.Format with unicode information

我正在尝试使用 string.Format 来包含货币符号,但看到了意外结果。

查看以下内容:

var textToReplace = "Final price is {0} {1}";
var output = string.Format(textToReplace, "Include MAD currency symbol here", "123.90");
output.Dump();

//货币符号是د.م.

Final price is د.م. 123.90

奇怪的是,当我输入这个问题时,SO问题区域会自动切换货币符号位置和金额。解释起来有点难,你自己试试吧。

我想看到货币符号后跟金额。但是我看到金额后跟货币符号。

我该如何解释这种行为?

您遇到的问题是该符号是 RTL。位置是正确的,但它以另一种方式呈现。您可以尝试添加 Unicode \u200E。 这将标记字符应该是从左到右

例如:

var textToReplace = "Final price is {0} {1}";
var output = string.Format(textToReplace, "Include MAD currency symbol here\u200E", "123.90");
output.Dump();

示例:https://dotnetfiddle.net/zVegfA