Как изменить String в C#

Например, у меня есть путь к файлу

string InputPath = @"C:\Users\Vardan\Desktop\Test\Input.txt"

Я хочу, создать новый string и поменять последную часть на

string ResultPath = @"C:\Users\Vardan\Desktop\Test\Result.txt"


Ответы (2 шт):

Автор решения: return
string ReplaceFileName(string path, string newFileName)
{
    var fileNameStart = Math.Max(path.LastIndexOf('\\'), path.LastIndexOf('/')) + 1;

    return path.Remove(fileNameStart) + newFileName;
}

path должен быть валиден.


Или в "1" строчку:

string ReplaceFileName(string path, string newFileName) =>
    path.Remove(Math.Max(path.LastIndexOf('\\'), path.LastIndexOf('/')) + 1) +
    newFileName;

Алгоритм основан на том, что имя файла начинается после последнего разделителя. Мы его ищем, а затем добавляем 1 (сразу за разделителем идет начало нашего имени файла). Дальше, зная строку, которую нужно заменить, заменяем её.

→ Ссылка
Автор решения: Andrew

Для работы с путями в шарпе есть Path. Остальное - костыли которые будут ломаться в той или иной ситуации, потому что программист что-то да забудет учесть.

Поэтому как-то так:

var oldPath = @"C:\Users\Vardan\Desktop\Test\Input.txt";

var tmp = new[] { Path.GetDirectoryName(oldPath), "Result.txt" };

var newPath = Path.Combine(tmp);

Цитата из документации:

GetDirectoryName('C:\MyDir\MySubDir\myfile.ext') returns 'C:\MyDir\MySubDir'

→ Ссылка