如何使用共享路径中的单个反斜杠替换双反斜杠

时间:2018-10-23 13:59:12

标签: c# c#-4.0

我需要更改路径

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

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

如果我检查

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

注意:

该路径不是硬编码的。这将从数据源中检索。都是动态的。

5 个答案:

答案 0 :(得分:4)

此代码也必须在不将“ \\”替换为“ \”的情况下工作

//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("\\","/");

答案 1 :(得分:2)

我建议使用现有的帮助器类,但这也可以:

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

答案 2 :(得分:0)

尝试一下,@使字符串忽略转义字符。

   File.Exists(@"\NDWERE8669\200002679\xyz\xyz_1\645d8fa96d254a2ea188a7a9658f5632\test.pdf")

答案 3 :(得分:0)

怎么样?

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 */

答案 4 :(得分:0)

不使用字符串替换(和最安全的IMHO)的解决方案之一是使用Path.GetFullPath方法来标准化路径:

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