正则表达式仅检测单个反斜杠并替换为双

时间:2020-05-06 18:38:13

标签: .net vb.net visual-studio

我的功能从各个地方获取网络路径。

某些人将正确的路径发送为:

\\\\ 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

这不应该发生。仅当路径中有单个斜杠时,才应进行转换。

该怎么办?

2 个答案:

答案 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

相关问题