C#:从右到左语言的自定义数字格式

C#: Custom number formatting in rigth to left languages

我正在尝试在 从右到左 文本框(实际上是在列表视图中,但无论如何)中写一个自定义格式的数字。这是代码:

NumberFormatInfo nfi = (NumberFormatInfo)
            CultureInfo.InvariantCulture.NumberFormat.Clone();
nfi.NumberGroupSeparator = " ";
textbox1.Text = (18700).ToString("#,###",nfi);

而不是 18 700 我得到 700 18。我可以在数字到字符串转换后不处理字符串的情况下解决这个问题(获得所需的 18 700)吗?

我觉得你可以做这样的小动作:

textBox1.Text = TurnString((18700).ToString("#,###", nfi));

public static string TurnString(string value)
{
    Stack<string> stack = new Stack<string>();
    foreach(string a in value.Split(' '))
    {
        stack.Push(a);
    }
    string result = string.Empty;
    while(stack.Count>0)
    {
        result += stack.Pop()+' ';
    }
    return result;
}

使用 no-break space 而不是 space。它的字符在 C# 中是 (char)0x00A0'\u00A0'。您也可以使用 Alt+255.

使用键盘输入

所以你可以这样设置NumberGroupSeparator

nfi.NumberGroupSeparator = "\u00A0";