Regex只检测单个反斜杠,并用双斜杠替换



我的函数从不同的地方获取网络路径。

有些人发送正确的路径为:

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

最新更新