Как заменить двойную обратную косую черту одним обратным слэшем из общего пути

Мне нужно изменить путь от

"\\NDWERE8669\200002679\xyz\xyz_1\645d8fa96d254a2ea188a7a9658f5632\test.pdf"

в

"\NDWERE8669200002679xyzxyz_1645d8fa96d254a2ea188a7a9658f5632	est.pdf"

Если я проверю

File.Exists("\\NDWERE8669\200002679\xyz\xyz_1\645d8fa96d254a2ea188a7a9658f5632\test.pdf") // returns false

Замечания:

путь не является жестко заданным. это будет извлекаться из источника данных. его все динамическое.

Всего 5 ответов


Этот код также должен работать без замены «\» на «»

//is true path
"\\NDWERE8669\200002679\xyz\xyz_1\645d8fa96d254a2ea188a7a9658f5632\test.pdf"

Вы также можете использовать

string fileString = "\\NDWERE8669\200002679\xyz\xyz_1\645d8fa96d254a2ea188a7a9658f5632\test.pdf";
            fileString=fileString.Replace("\\","//").Replace("\","/");

Я бы рекомендовал использовать существующие вспомогательные классы, но это также работает:

string fileString = "\NDWERE8669\200002679\xyz\xyz_1\645d8fa96d254a2ea188a7a9658f5632\test.pdf";
if (File.Exists(filestring))
    filestring = filestring.Replace("\\", "\");

Попробуйте это, @ заставляет строку игнорировать escape-символы.

   File.Exists(@"NDWERE8669200002679xyzxyz_1645d8fa96d254a2ea188a7a9658f5632	est.pdf")

Как насчет этого?

string strRegex = @"(\+)";
Regex myRegex = new Regex(strRegex, RegexOptions.Singleline);
string strTargetString = 
@"\\NDWERE8669\200002679\xyz\xyz_1\645d8fa96d254a2ea188a7a9658f5632\test.pdf";
string strReplace = @"";

if (File.Exists(@"" + myRegex.Replace(strTargetString, strReplace))) { /* do somthing */

Одним из решений без замены строк (и безопасным IMHO) является использование метода Path.GetFullPath который будет нормализовать путь:

var normalizedPath = Path.GetFullPath("\\NDWERE8669\200002679\xyz\xyz_1\645d8fa96d254a2ea188a7a9658f5632\test.pdf");
//normalizedPath will be equal to "\NDWERE8669200002679xyzxyz_1645d8fa96d254a2ea188a7a9658f5632	est.pdf"
File.Exists(normalizedPath){...}

Есть идеи?

10000