首页 > 解决方案 > 检查字符串中的特殊字符

问题描述

我需要在其中包含字母数字值的字符串中找到特殊字符。

我已经尝试了下面的代码片段,但它不起作用。

$Special_characters = ('\n|\r|\t|\a|\"|\`')
$Value = "g63evsy3swisnwhd83bs3hs9sn329hs\t"
if($Value -match $Special_characters)
{
    Write-Host "Special characters are present"
}
else
{
    Write-Host "special characters are absent"
}

即使末尾有特殊字符,输出也会显示“没有特殊字符”。如何解决?

标签: powershell

解决方案


$Special_Characters这是一个字符串,因此您的代码正在搜索要在 中找到的整个单词 (\n|\r|\t|\a|\"|`) $Value,但未找到。

您必须使用数组而不是字符串,如下所示:

$Value = "g63evsy3swisnwhd83bs3hs9sn329hs\t"
$Special_Characters = @('\\n','\\r','\\t','\\a','\\"','\\`')
$Special_Characters | Foreach-Object {
    if ($Value -match $_) {
        "$_ is present"
    } else {
        "$_ is not present"
    }
}

笔记

你必须放双反斜杠 (\\) 因为反斜杠在 Powershell 中被视为转义字符;在此处查看有关 Powershell 中反斜杠的更多信息


推荐阅读