У меня есть проблема со Строкой. Формат. Следующие форматы кода строка правильно кроме первого целого числа. Текущая культура установлена на иракский арабский язык (IQ площади):
int currentItem= 1;
string of= "من";
int count = 2;
string formatted = string.Format(CultureInfo.CurrentCulture, "{0}{1}{2}", currentItem, of, count);
Текст отформатирован справа налево, и эти 2 преобразовывается в арабскую цифру, но этот 1 не.
Какие-либо идеи?
Поведение по умолчанию для преобразования числовых значений - «Контекст», что в основном означает, что если число продолжается на арабском языке, они отображаются на арабском языке (или другом «нелатинском» символе), если они » Это не значит, что они отображаются в «стандартных» европейских номерах.
Вы можете довольно легко изменить это поведение:
var culture = CultureInfo.CurrentCulture;
culture.NumberFormat.DigitSubstitution = DigitShapes.NativeNational; // Always use native characters
string formatted = string.Format(culture, "{0:d}{1:d}{2:d}", currentItem, of, count);
Это должно сработать так, как вы ожидаете - подробности на MSDN .