Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在控制台C中格式化RTL文本和列#_C#_Right To Left_String.format_Console.writeline - Fatal编程技术网

C# 在控制台C中格式化RTL文本和列#

C# 在控制台C中格式化RTL文本和列#,c#,right-to-left,string.format,console.writeline,C#,Right To Left,String.format,Console.writeline,我正在使用“string.Format”来处理文本和创建列 string.Format("{0, -4}{1, -16}{2, 11}\n", "#", "Name", "Price") 结果为英语,LTR格式正确: ‎# Name Price --- ------- -------- 1 Product1 234440 2 Product2

我正在使用“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,但结果并没有改变

我想要的列显示是:

    نام                  قیمت   #
    -----              ------- ---
    محصول۱              ۱۲۲۲۳   #
    محصول۲               ۲۲۳۳   #

有没有办法解决这个问题?

请使用下面的代码示例。基于
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();
}

谢谢但是,当我使用number而不是“#”时,列无法正确显示!您可以在调试模式下测试它以查看波斯字符!刚刚编辑了我的答案。我在
baseStr2
Agree中将4增加到14,cmd和终端本机不支持RTL。