Member 13151067 Ответов: 1

Как удалить новую строку из конца строки в C#?


как удалить новую строку из конца строки ?Это мой код для сортировки записей после написания его с помощью binarywriter

Что я уже пробовал:

string inFile = Class1.filename;
       string outFile = Class1.filename;

       var contents = File.ReadAllLines(inFile);
      Array.Sort(contents);
       File.WriteAllLines(outFile, contents);

PIEBALDconsult

Обрезать?
Но ReadAllLines уже должны были их удалить, так почему же вы думаете, что вам это нужно?

Dave Kreskowiak

Потому что он пишет текстовые файлы с помощью двоичного писателя.

1 Ответов

Рейтинг:
0

OriginalGriff

ReadAllLines действительно удаляет все новые строки, но WriteAllLines возвращает их все обратно!
Вместо этого попробуйте это:

string inFile = Class1.filename;
string outFile = Class1.filename;
var contents = File.ReadAllLines(inFile);
Array.Sort(contents);      
File.WriteAllText(outFile, string.Concat(contents));


Member 13151067

когда я пытаюсь использовать WriteAllText(outfile, string. concat(contents)); записи не будут отсортированы, как writeAlllines

OriginalGriff

Да, будут.
Вы сортировали их в строке перед операцией записи.

Member 13151067

Как я могу их сортировать?

OriginalGriff

Как вы думаете, что делает эта линия?

Массив.Сорт(содержание);

Member 13151067

Сортировка массива строк

OriginalGriff

Правильно!
Итак, если он сортирует строки, а затем вы записываете их в файл,то что получается в результате? :смеяться:

Member 13151067

Файл будет отсортирован, но я пишу записи с помощью binary writer, и они не сортировались после сортировки
вот мой код для записи данных
ещё
{

БВ.BaseStream.Seek (длина, SeekOrigin. Begin);


textBox2. Text = textBox2.Text. PadRight(5);
БВ.Писать(инт.Синтаксический анализ(поле textbox2.Текст).ToString("D5").Подстрока(0, 5));

textbox3 и.Текст = textbox3 и.Текст.PadRight(9);
bw. Write(textBox3. Text. Substring(0, 9));

textBox4.Текст = textBox4.Текст.PadRight(11);
bw. Write( textBox4. Text. Substring(0, 11));

textBox5.Текст = textBox5.Текст.PadRight(4);
БВ.Писать(инт.Синтаксический анализ(textBox5.Текст).ToString ("D4"). Substring(0, 4));

textBox6.Текст = textBox6.Текст.PadRight(1);
bw. Write(textBox6. Text. Substring(0, 1));
длина += Класс1.rec_size;
}

OriginalGriff

Так... вы записываете данные в файл в виде текстовых полей фиксированной длины без каких-либо разрывов строк, считываете их обратно как текст и отбрасываете любые разрывы строк, которых там нет, и предполагаете, что вы можете отсортировать результат?

Нет, нет, это совсем не правильный подход.
И это игнорирование того, что вы берете строку, преобразуете ее в целое число, преобразуете обратно в строку, а затем предполагаете, что можете вырвать из нее кусок.

Вам нужно вернуться к тому, что вы должны делать, и подумать об этом - потому что либо вы очень сильно ошиблись концом палки, либо вы действительно не понимаете, что здесь происходит.

Хорошенько подумайте, а затем объясните, чего вы пытаетесь достичь - не того, что делает ваш код, потому что это совсем не хорошо, а какую задачу вы пытаетесь заставить работать.