我正在使用' string.Format'操纵文本和创建列
string.Format("{0, -4}{1, -16}{2, 11}\n", "#", "Name", "Price")
并导致英文和LTR格式正确无误:
# Name Price
--- ------- --------
1 Product1 234440
2 Product2 34455
当我更改语言并使用阿拉伯字符时,列对齐显示不正确:
# نام قیمت
--- ------- --------
1 محصول ۲ ۳۴۲۳۴
2 محصول ۳ ۴۵۳۴۵۳
我也使用\ u200E和\ u200F,但结果没有变化。
我想要的列显示是:
نام قیمت #
----- ------- ---
محصول۱ ۱۲۲۲۳ #
محصول۲ ۲۲۳۳ #
有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
请使用以下代码示例。基于baseStr2
的第二个系列可以按您的需要工作。
static void Main(string[] args)
{
var baseStr = "{0, -4}{1, -16}{2, 11}\n";
Console.WriteLine(string.Format(baseStr, "#", "Name", "Price"));
Console.WriteLine(string.Format(baseStr, "#", "Product1", "1232132"));
Console.WriteLine(string.Format(baseStr, "#", "P 2", "88"));
Console.WriteLine("------------------------");
Console.WriteLine(string.Format(baseStr, "#", "نام", "قیمت"));
Console.WriteLine(string.Format(baseStr, "#", "فرش", "1232132"));
Console.WriteLine(string.Format(baseStr, "#", "یخچال فریزر", "88"));
Console.WriteLine("------------------------");
var baseStr2 = "{2, -11}{1, 16}{0, 14}\n";
Console.WriteLine(string.Format(baseStr2, "#", "Name", "Price"));
Console.WriteLine(string.Format(baseStr2, "#", "Product1", "1232132"));
Console.WriteLine(string.Format(baseStr2, "#", "P 2", "88"));
Console.WriteLine("------------------------");
Console.WriteLine(string.Format(baseStr2, "#", "نام", "قیمت"));
Console.WriteLine(string.Format(baseStr2, "۳۴۲۳۴", "فرش", "1232132"));
Console.WriteLine(string.Format(baseStr2, "۴۵۳۴۵۳", "یخچال فریزر", "88"));
Console.WriteLine("------------------------");
Console.ReadLine();
}