Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Форматирование текста в сохраняемом txt файле


Автор: okaton 5.10.2007, 11:14
Доброго времени суток.

Мне необходимо мои обработанные данные записать в текстовый файл.
Проблема возникла вот в чем. Данные должны распологаться в текстовом файле особым образом, т.е. на лицо должно присутствовать форматирование текста. К примеру я записываю в файл массив, элементы которого должны выглядеть в виде столбиков
Код

StreamWriter zapisTXT = new StreamWriter("1.txt"); 
for (
{
...
zapisTXT.Write(mass1[m, e] + "  ");
...
}


В принципе в виде столбиков они и выглядят, но промежутки между элементами надо увеличить, можно конечно + "  " сюда насовать пробелов или табуляцию поставить, но это не совсем верно (для меня).

Я переписываю программу с Паскаля, там это выглядело таким образом
Код

(P,mass1[m,e]:5:1,"  ") //где P это text


Кстати кно-либо знает что такое здесь :5:1 ?


И еще вопрос
Код

for ...
zapisTXT.Write(".");
...

Здень необходимо чтобы точки последовательно записывались в строку, а у меня переносятся на следующую, в чем проблема?


Автор: FREEDEV 5.10.2007, 11:30
Цитата(okaton @  5.10.2007,  11:14 Найти цитируемый пост)
zapisTXT.Write(mass1[m, e] + "  ");


Если тебе нужно чтоб отступ не зависел от количества цифр в ячейке - используй string.Format

Цитата(okaton @  5.10.2007,  11:14 Найти цитируемый пост)
(P,mass1[m,e]:5:1,"  ") //где P это text


тут скорей всего так и сделано: в ячейке 5 символов, которые заполняются значением из массива, свободное место добивается пробелами.

Цитата(okaton @  5.10.2007,  11:14 Найти цитируемый пост)
Здень необходимо чтобы точки последовательно записывались в строку, а у меня переносятся на следующую, в чем проблема?


все работает, значит где-то переносиш на новую строку

Код

            StreamWriter zapisTXT = new StreamWriter("1.txt"); 
            for (int i=0;i<100;i++)
            {
                zapisTXT.Write(".");
            }
            zapisTXT.Close();


Автор: okaton 5.10.2007, 11:45
FREEDEV, спасибо


Цитата

Если тебе нужно чтоб отступ не зависел от количества цифр в ячейке - используй string.Format

а где мне его использовать?


Цитата

все работает, значит где-то переносиш на новую строку

НАШЕЛ!!! smile , в конце цикла zapisTXT.WriteLine(""); , а разве перенос строки не "\n" или не только?

Автор: okaton 5.10.2007, 12:05
Если так, то изменений нет
Код

zapisTXT.Write(string.Format(mass1[m,e] + " "), 5));

Хотя, судя по всему должны быть

Автор: FREEDEV 5.10.2007, 12:49
Код

           StreamWriter zapisTXT = new StreamWriter("1.txt"); 
            for (int i=0;i<1001;i++)
            {
                zapisTXT.Write(string.Format("{0,-5}", i));
            }
            zapisTXT.Close();


выравнивание относительно левой стороны

Добавлено через 1 минуту и 34 секунды
Код

zapisTXT.Write(string.Format("{0,5}", i));


так правой

Автор: okaton 5.10.2007, 13:26
FREEDEV, Спасибо работает!

У меня по ходу возник еще один вопрос. У меня присутствуют отрицательные значения, а выравнивание сейчас идет по первому символу, т.е. число с минусом сдвигается. Можно ли каким-то образом сделать так что бы минус игнорировался, а выравнивание происходило по числам? Условие на отрицание поставить не получиться:(


И еще вот вопрос почему у меня целые числа (тип float) обрабатываются как 100.0 а в файл сохраняются 100 без 0, а он мне нужен?

Автор: mr.DUDA 5.10.2007, 17:33
Модератор: Пожалуйста, один топик - один вопрос.

Автор: okaton 5.10.2007, 17:36
mr.DUDA, тему закрывать?

Автор: mr.DUDA 5.10.2007, 17:49
Не обязательно. Просто открыть новую с новым вопросом smile

Автор: okaton 5.10.2007, 17:55
OK

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)