Программное выравнивание текста по ширине
Небольшая заметка, в которой хочу показать на простом примере, как сделать выравнивание текста по ширине в текстовом файле.
И так предположим, что у нас есть файл, в котором содержится несколько записей.
Задача: выровнять текст по ширине так, чтобы в файле получилось две колонки.
1. Создаём новый проект типа Windows Forms Application.
2. Добавляем на форму кнопку (Button) и OpenFileDialog (ofd).
3. Подписываемся на событие Button.Click, после чего в обработчике данного события добавляем следующий код:
using System.IO; //добавить private void button1_Click(object sender, EventArgs e) { //открываем диалоговое окно выбора файла if (ofd.ShowDialog() == DialogResult.OK) { List<string> list = new List<string>(); //построчно читаем файл foreach (string str in File.ReadAllLines(ofd.FileName)) { //отделяем текст от чисел list.AddRange(str.Split( new char [] {' '})); }
Вот так выглядит список после разбивки.
//открываем поток на запись в файл using (StreamWriter sw = new StreamWriter(ofd.FileName)) { for (int i = 0; i < list.Count; i += 2) { //делаем выравнивание sw.WriteLine(String.Format("{0, -20} {1}", list[i], list[i + 1])); } } MessageBox.Show("Готово!"); } }
В строке формат вместо чисел 0 и 1 подставляются значения: list[i] и list[i + 1].
Для того чтобы текст выровнялся по ширине, вторым значением (в фигурных скобках) указываем длину столбца, в данном случае — это число -20. Даже если строка превысит данную длину, то между столбцами всё равно всегда будет создаваться один пробел.
Само же число должно быть отрицательным, чтобы отступ шёл в правую, а не в левую сторону, как например, на картинке ниже.
Пример с тремя колонками:
String.Format("{0,-10} {1,-10} {2}", "BMW", "X5", 2010));
результат
Читайте также: