Как изменить String в C#
Например, у меня есть путь к файлу
string InputPath = @"C:\Users\Vardan\Desktop\Test\Input.txt"
Я хочу, создать новый string и поменять последную часть на
string ResultPath = @"C:\Users\Vardan\Desktop\Test\Result.txt"
Ответы (2 шт):
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 (сразу за разделителем идет начало нашего имени файла). Дальше, зная строку, которую нужно заменить, заменяем её.
Для работы с путями в шарпе есть 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'