我的功能从各个地方获取网络路径。
某些人将正确的路径发送为:
\\\\ 127.0.0.1 \\ Folder1 \\ Folder2 \\ File.txt
但是有些没有。他们发送:
\\ 127.0.0.1 \ Folder1 \ Folder2 \ File.txt
因为我的代码在VB中,所以也不会引起问题。我必须将其进一步发送到C#中的API,在第二种情况下会引发错误。
现在,我希望将第二种类型的路径转换为第一种。但是,如果路径已经是第一种格式,则不要执行任何操作。
如果我将\替换为\\,它将把第一种路径更改为:
\\\\\\\\ 127.0.0.1 \\\\ Folder1 \\\\ Folder2 \\\\\ File.txt
这不应该发生。仅当路径中有单个斜杠时,才应进行转换。
该怎么办?
答案 0 :(得分:1)
如果您不想使用Regex,请尝试一下:
Dim path As String = "\\127.0.0.1\Folder1\Folder2\File.txt"
If Not path.StartsWith("\\\\") Then path = path.Replace("\", "\\")
答案 1 :(得分:1)
您可以使用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.1\Folder1\Folder2\File.txt
因此,您现在有了一个一致的起点-三重反斜杠除外,我在File path formats on Windows systems中找不到该反斜杠。
最后,
Dim q = IO.Path.GetFullPath(p).Replace("\\\", "\\").Replace("\", "\\")
给予
\\\\127.0.0.1\\Folder1\\Folder2\\File.txt
即使输入\\127.0.0.1\Folder1\Folder2\File.txt
。