我的函数从不同的地方获取网络路径。
有些人发送正确的路径为:
\\\\127.0.0.1\\Folder1\\Folder2\\File.txt
但有些人没有。他们发送:
\\127.0.0.1\Folder1\Folder2\File.txt
因为我的代码是在VB中。它既不会引起问题。我必须将其进一步发送到C#中的API,它在第二种情况下抛出错误。
现在,我希望将第二种类型的路径转换为第一种。但如果路径已经是第一种格式,则不要执行任何操作。
如果我用\\替换\,它将把第一种类型的路径更改为:
\\\\\\\\\\\\\127.0.0.1\\\\\Folder1\\\\\older2\\\\\File.txt
这不应该发生。只有当路径中有一个斜杠时,才应该进行转换。
能做些什么?
您可以使用IO.Path.GetFullPath来规范化路径:
Dim p = "\\127.0.0.1\Folder1\Folder2\File.txt"
Dim q = IO.Path.GetFullPath(p)
Console.WriteLine(q)
输出:
\127.0.0.1Folder1Folder2File.txt
所以现在你有了一个一致的起点——除了三反斜杠,我在Windows系统的文件路径格式中找不到它的引用。
最后,
Dim q = IO.Path.GetFullPath(p).Replace("\", "\").Replace("", "\")
给出
\\127.0.0.1\Folder1\Folder2\File.txt
即使对于CCD_ 1的输入也是如此。
如果您不想使用Regex,请尝试一下:
Dim path As String = "\127.0.0.1Folder1Folder2File.txt"
If Not path.StartsWith("\\") Then path = path.Replace("", "\")