Ширина таба в консоли
От: SergASh  
Дата: 13.11.15 11:49
Оценка:
Привет всем!

Можно ли как-то из C# управлять количеством знакомест, которые консоль отводит под символ табуляции?
Re: Ширина таба в консоли
От: Sinix  
Дата: 13.11.15 12:12
Оценка:
Здравствуйте, SergASh, Вы писали:


SAS>Можно ли как-то из C# управлять количеством знакомест, которые консоль отводит под символ табуляции?

Все решения сводятся к хакам из разряда "Обернуть Console.Out в свой TextWriter, заменять на нужное число пробелов".

Как оно будет сочетаться с SetPosition() и \b — это уже другой вопрос Емнип оно и с стандартным табом не очень дружило.
Re: Ширина таба в консоли
От: seimur  
Дата: 08.12.15 08:28
Оценка:
Здравствуйте, SergASh, Вы писали:

SAS>Привет всем!


SAS>Можно ли как-то из C# управлять количеством знакомест, которые консоль отводит под символ табуляции?

Количеством пробелов можно управлять используя класс ConsoleTraceListener и изменять свойства IndentSize и IndentLevel и символ табуляции можно не использовать.
Вот небольшой примерчик:
    class Program
    {
        static void Main(string[] args)
        {
            ConsoleTraceListener consoleTraceListener = new ConsoleTraceListener {IndentSize = 3};
            Trace.Listeners.Add(consoleTraceListener);
            Trace.WriteLine("Hello");
            consoleTraceListener.IndentLevel = 2;
            Trace.WriteLine("Tabbed Hello"); // No need in tab symbol.
        }
    }
Теоретически нет разницы между теорией и практикой, но на практике она есть
Re[2]: Ширина таба в консоли
От: Sinix  
Дата: 08.12.15 08:39
Оценка:
Здравствуйте, seimur, Вы писали:

S>Количеством пробелов можно управлять используя класс ConsoleTraceListener и изменять свойства IndentSize и IndentLevel и символ табуляции можно не использовать.


Как бы да, но есть нюанс

1. Лучше не портить глобальные настройки Trace и создать свой инстанс TraceSource.
2. На стандартный вывод в консоль оно никак не влияет, вопрос был про него.
3. В остальном всё хорошо, если не считать того, что идея не работает:
Trace.WriteLine("\tTabbed\tHello"); // Oops.
Re[3]: Ширина таба в консоли
От: seimur  
Дата: 08.12.15 12:59
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, seimur, Вы писали:


S>>Количеством пробелов можно управлять используя класс ConsoleTraceListener и изменять свойства IndentSize и IndentLevel и символ табуляции можно не использовать.


S>Как бы да, но есть нюанс


S>1. Лучше не портить глобальные настройки Trace и создать свой инстанс TraceSource.

S>2. На стандартный вывод в консоль оно никак не влияет, вопрос был про него.
S>3. В остальном всё хорошо, если не считать того, что идея не работает:
S>
S>Trace.WriteLine("\tTabbed\tHello"); // Oops.
S>


Если в любом месте строчки, то можно с помощью extension method
    public static class StringExtensions
    {
        public static string TabWidth(this string @string, int tabSize)
        {
            string spaces = new string(' ', tabSize);
            return @string.Replace("\t", spaces);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("\tHello\tWorld!!".TabWidth(5));
        }
    }
Теоретически нет разницы между теорией и практикой, но на практике она есть
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.