Использование string.Format с информацией юникода - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь использовать 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 автоматически переключает позицию символа валюты на сумму. Это сложно объяснить, попробуйте сами.

Я хотел бы видеть символ валюты, а затем сумму. Однако я вижу сумму, за которой следует символ валюты.

Как я могу объяснить это поведение?

1 Ответ

3 голосов
/ 28 января 2020

Проблема, с которой вы сталкиваетесь, заключается в том, что символом является RTL. Позиция правильная, но она отображается другим способом. Вы можете попробовать добавить юникод \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

...