.NET 的 System.Console 可以配置为从右到左打印吗?

Can .NET's System.Console be configured to print Right To Left?

在解决 here 中描述的打印非 ascii 字符的问题后,我想知道是否可以将控制台配置为从右到左打印?

我现在正在玩 Visual Studio T4 模板,想亲眼看看尝试从数据库查找表中自动生成枚举的结果 - 为此,我想在此控制台中测试自己我为此写的应用程序。

显然,作为解决方法,打印以下内容对我有帮助:

new string(str.ToCharArray().Reverse().ToArray())

但是控制台是否支持 RTL 打印?

由于没有发现内置支持,我从其他帖子了解到您可以使用控制台的光标进行游戏。所以像下面这样的东西会做到这一点:

private static void Main(string[] args)
{
    Console.OutputEncoding = Encoding.Unicode;

    List<string> sentences = new List<string>();

    sentences.Add(string.Format("אברהם"));
    sentences.Add(string.Format("שורה {0}, אחרי אברהם", 2));

    foreach (var sentence in sentences)
    {
        WriteLineRTL(sentence);
    }
}

private static void WriteLineRTL(string input)
{
    var chars = input.ToCharArray();
    Console.CursorLeft = chars.Length;
    for (int i = 0; i < chars.Length; i++)
    {
        Console.Write(chars[i]);
        Console.CursorLeft -= 2;
    }
    Console.WriteLine();
}

输出:

如果除了以相反的方式 (RTL) 呈现字符串之外,您还想打印与屏幕右侧对齐的字符串,请使用:

private static void WriteLineRtl(string input)
{              
  Console.CursorLeft = Console.WindowWidth - input.Length;
  for (int i = input.Length - 1; i >= 0; i--)        
      Console.Write(input[i]); 
}

示例:

using static System.Console;

class Program
{
  static void Main(string[] args)
  {
    WriteLineRtl("שלום,");
    WriteLineRtl("בהמשך לשיחתנו הטלפונית,");
    WriteLineRtl("רציתי להודיע שהכל בסדר.");
    WriteLineRtl("שלום ולהתראות!");

    Read();
  }

  static void WriteLineRtl(string input)
  {
    CursorLeft = WindowWidth - input.Length;
    for (int i = input.Length - 1; i >= 0; i--)
      Write(input[i]);
  }
}

输出: