首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查字符串中的特殊字符

检查字符串中的特殊字符
EN

Stack Overflow用户
提问于 2019-07-05 05:25:15
回答 4查看 3.9K关注 0票数 2

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

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

代码语言:javascript
复制
$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"
}

输出显示“特殊字符不存在”,即使在结尾有特殊字符。如何解决这个问题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-05 06:18:47

这是一条单线线:

代码语言:javascript
复制
$Special_characters = '\n|\r|\t|\a|\"|\`'
$Value = "g63evsy3swisnwhd83bs3hs9sn329hs\t"

$result = @($Special_characters -split '\|' | % { $Value.Contains( $_ ) }).Contains( $true )

当发现特殊字符时,$result为真,否则为false。

票数 0
EN

Stack Overflow用户

发布于 2019-07-05 05:49:20

$Special_Characters在这里是一个字符串,所以您的代码正在搜索整个单词(\n\r\r\\t\\a\a\“) to be found in$Value`,没有找到它。

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

代码语言:javascript
复制
$Value = "g63evsy3swisnwhd83bs3hs9sn329hs\t"
$Special_Characters = @('\\n','\\r','\\t','\\a','\\"','\\`')
$Special_Characters | Foreach-Object {
    if ($Value -match $_) {
        "$_ is present"
    } else {
        "$_ is not present"
    }
}

Note

您必须放置双反斜杠(\),因为反斜杠在Powershell中被认为是转义字符;有关Powershell中反斜杠的更多信息,请查看这里

票数 1
EN

Stack Overflow用户

发布于 2019-07-05 07:34:01

这里有个误会。

反斜杠用于在正则表达式中定义一个特殊字符,例如\t定义一个制表符。

但PowerShell的情况并非如此。要在PowerShell中定义一个特殊字符,您需要使用回勾字符(参见:关于特殊人物),例如,Tab被写成`t

换句话说,问题中的正则表达式模式是正确的,但输入字符串不是(与问题/标题所暗示的相反,在给定的输入字符串中实际上没有特殊字符“)。

它应该是:

代码语言:javascript
复制
"...hs9sn329hs`t" -match '\n|\r|\t|\a|\"|\`'
True

由于它涉及单个(特殊)字符的列表,因此还可以考虑使用括号表达式(而不是OR“管道”字符):

代码语言:javascript
复制
"...hs9sn329hs`t" -match '[\n\r\t\a\"\`]'
True

Visa相反:允许使用双引号在正则表达式模式中使用特殊字符,以便PowerShell计算字符串(但我建议不要这样做):

代码语言:javascript
复制
"...hs9sn329hs`t" -match "`n|`r|`t|`a|`"|``"
True

如果问题中的输入字符串实际上是要检查的字符串(这意味着将反斜杠称为特殊字符,形式上不是),则需要检查\t而不是选项卡。为此,您需要转义正则表达式中的反斜杠,以便与\t匹配。

代码语言:javascript
复制
"...hs9sn329hs\t" -match '\\n|\\r|\\t|\\a|\\"|\\`'
True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56896979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档