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