Bruno Earth Ответов: 1

Как удалить текст из определенной строки в файле, не создавая ненужного пространства с помощью C#?


Я пытаюсь удалить текст из определенной строки в файле, который я создал "Test.txt".

Вот текст, написанный в Test.txt:
1
2
3
4
5
6
7
8
9
10

Теперь я хочу, чтобы, когда я собираюсь удалить 1-5, цифры 6-10 должны заменить строку на 1-5. Подобный этому:
6
7
8
9
10

Но когда я попробовал код он дал мне этот вывод:





6
7
8
9
10

Как вы можете видеть из приведенного выше вывода, это нежелательное пространство, о котором я говорю.

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

Вот код, который я пробовал:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestCode
{
class Program2
{
    static void Main()
    {
        lineChanger("", @"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\Test.txt", 1);
        lineChanger("", @"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\Test.txt", 2);
        lineChanger("", @"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\Test.txt", 3);
        lineChanger("", @"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\Test.txt", 4);
        lineChanger("", @"C:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\Test.txt", 5);
    }

    static void lineChanger(string newText, string fileName, int line_to_edit)
    {
        string[] arrLine = File.ReadAllLines(fileName);
        arrLine[line_to_edit - 1] = newText;
        File.WriteAllLines(fileName, arrLine);
    }
}
}


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

[no name]

Поэтому записывайте в файл только те элементы массива, которые на самом деле содержат что-то иное, чем пустая строка.

1 Ответов

Рейтинг:
1

#realJSOP

Использование списка вместо массива облегчает задачу.

static void lineChanger(string newText, string fileName, int line_to_edit)
{
    List<string> arrLine = File.ReadAllLines(fileName).ToList();
    if (arrLine.Count <= line_to_edit)
    { 
        if (string.IsNullOrEmpty(newText))
        {
            arrLine.RemoveAt(line_to_edit - 1);
        }
        else
        {
            arrLine[line_to_edit-1] = newText;
        }
        File.WriteAllLines(fileName, arrLine.ToArray());
    }
    else
    {
        throw new Exception(string.Format("File does not contain {0} lines. Operation aborted.", line_to_edit));
    }
}


[no name]

Этот код не работает. Он дает мне это исключение: необработанное исключение типа ' System.Исключение " произошло в TestCode.exe

Дополнительная информация: файл не содержит 1 строки. Операция прервана.

Как это исправить?

#realJSOP

Как это исправить? Наймите программиста.

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

[no name]

как грубо..

jimmson

Люди здесь стараются помогать программистам, а не делают свою работу бесплатно..

[no name]

вы предложили решение, но оно не сработало. Разве это не правильно, что вы исправляете свое решение, чтобы помочь программистам?

#realJSOP

У меня нет файла, с которым вы работаете. У меня нет желания/времени, чтобы создать его. С другой стороны, вы не предприняли никаких видимых попыток решить свою проблему, кроме копирования/вставки кода, который, по понятным причинам, может не работать конкретно для вас.

Если вы ожидаете, что каждое решение, которое вы получите здесь, будет аккуратно вписываться в то, что вы называете "кодом", вас ждет грубое пробуждение.

[no name]

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

[no name]

как насчет того, чтобы прочитать это? К ЧЕРТУ ТЕБЯ!

[no name]

Ух ты,а ты жалуешься на грубость других. Такой мусор может привести к тому, что вас забанят с сайта.