在Powershell 5中,解析字符串的正斜杠和反斜杠的最佳方法是什么

在Powershell 5中,解析字符串的正斜杠和反斜杠的最佳方法是什么,powershell,powershell-4.0,Powershell,Powershell 4.0,我接受ServerName和Share脚本文件的参数。我希望确保用户不会添加任何前导或尾随的前斜杠或反斜杠 目前,我正在做这个 function validateServerShare($a_server, $a_share) { $a_server = $a_server -replace'\\','' $a_server = $a_server -replace'/','' $a_share = $a_share -replace'\\','' $a_sha

我接受ServerName和Share脚本文件的参数。我希望确保用户不会添加任何前导或尾随的前斜杠或反斜杠

目前,我正在做这个

function validateServerShare($a_server, $a_share)
{

    $a_server = $a_server -replace'\\',''
    $a_server = $a_server -replace'/',''
    $a_share = $a_share -replace'\\',''
    $a_share = $a_share -replace'/',''

    $Path = "\\$a_server\$a_share"

    if(-not (Test-Path $Path)) 
    {
        haltError
    }
    return $Path
}
但是我不喜欢我有多条替换线的方式。是否有更干净或更简单的方法从字符串中去除前斜杠和后斜杠(如果存在)


提前感谢您提供的任何帮助。

您可以链接您的
-替换
呼叫:

$a_server = $a_server -replace '\\','' -replace '/',''
或者使用字符类来匹配以下两个字符:

$a_server = $a_server -replace '[\\/]',''

您可以链接您的
-replace
调用:

$a_server = $a_server -replace '\\','' -replace '/',''
或者使用字符类来匹配以下两个字符:

$a_server = $a_server -replace '[\\/]',''

过去,输入正则表达式以在变量中保存要替换的条件,然后替换该条件的每次出现:

$a_server = "\\\sql2016\"
$a_share = "\temp\"

$criteria = "(/|\\*)" --criteria you want to replace


    $a_server = ($a_server -replace $criteria,'')
    $a_share = ($a_share -replace $criteria,'')


    $Path = "\\$a_server\$a_share"
    ## $path is now \\sql2016\temp

过去,输入正则表达式以在变量中保存要替换的条件,然后替换该条件的每次出现:

$a_server = "\\\sql2016\"
$a_share = "\temp\"

$criteria = "(/|\\*)" --criteria you want to replace


    $a_server = ($a_server -replace $criteria,'')
    $a_share = ($a_share -replace $criteria,'')


    $Path = "\\$a_server\$a_share"
    ## $path is now \\sql2016\temp

你有没有看过
解析路径
?在帖子中你说的是“前导或尾随”斜杠,但在代码中你删除了任何斜杠,而不管位置是哪个?
。Trim(“\/”)
将删除字符串两端的前斜杠和后斜杠,而不是中间。你有没有看过
解析路径
?在帖子中你说的是“前导或尾随”斜杠,但在代码中你删除了任何斜杠,而不管位置是哪一个?
。Trim(“\/”)
将删除字符串两端的前斜杠和后斜杠,而不是中间。我最终使用这个解决方案,但我给@Mathias R Jessen一个+1作为另一个好的解决方案。我最终使用这个解决方案,但给@Mathias R Jessen一个+1作为另一个好的解决方案