PowerShell 的字符串处理

字符串搜索

通配符匹配

使用 -like 运算符进行简单的通配符匹配,支持 *(任意字符)和 ?(单个字符)。

$isMatch = "PowerShell Script" -like "*Shell*"

正则表达式匹配

使用 -match 运算符进行正则表达式匹配,返回布尔值并将结果存储在 $matches 自动变量中。

$text = "ID: 123-45-6789"
$hasMatch = $text -match "\d{3}-\d{2}-\d{4}"

在多行文本中搜索时,使用 (?s) 正则表达式选项使 . 匹配包括换行符在内的所有字符。

$multiLine = "Line1`nLine2`nLine3"
$found = $multiLine -match "(?s)Line1.*Line3"

当搜索命令输出时,使用 Out-String 将对象转换为文本格式以便搜索。

$helpText = Get-Help Get-Process | Out-String
$hasPattern = $helpText -match "parameter"

字符串方法

使用 Contains() 方法检查字符串是否包含特定子串。

$contains = "Hello World".Contains("World")

使用 IndexOf() 方法查找子串在字符串中的位置,返回索引(从0开始),未找到时返回-1。

$lastLocation = "item,item,item".IndexOf("item")

使用 LastIndexOf() 方法查找子串在字符串中最后一次出现的位置。

$lastLocation = "item,item,item".LastIndexOf("item")

使用 StartsWith()EndsWith() 方法检查字符串是否以特定子串开始或结束。

$starts = "Hello World".StartsWith("Hello")
$ends = "Hello World".EndsWith("World")

字符串替换

使用 Replace() 方法进行简单的文本替换(区分大小写)。

$updated = "Original text".Replace("Original", "Modified")

使用 -replace 运算符进行正则表达式替换,支持引用匹配组。

$formatted = "20231225" -replace "(\d{4})(\d{2})(\d{2})", '$1-$2-$3'

使用 [Regex]::Escape() 方法对包含正则表达式特殊字符的文本进行转义。

$specialText = "Cost: $100.00"
$escaped = [Regex]::Escape("$100.00")
$replaced = $specialText -replace $escaped, "¥700.00"

使用脚本块进行复杂的替换操作,可以在替换时执行自定义逻辑。

$numbers = "a0 b1 c2"
$incremented = $numbers -replace '\d', { [int]$_.Value + 1 }

字符串分割

使用单目 -split 运算符按空白字符分割字符串。

$words = -split "Multiple   spaces`tand`ntabs"

使用 -split 运算符按分隔符分割字符串,返回字符串数组。

$items = "red,green,blue" -split ','

使用正则表达式作为分隔符进行分割。

$components = "Data123Test456Result" -split '\d+'

使用 -split 运算符的 SimpleMatch 选项按字面文本分割,避免正则表达式解释。

$segments = "path.to.file" -split '.', 0, 'SimpleMatch'

使用脚本块作为分割条件,可对每个字符执行自定义逻辑。

$mixed = "A1b2C3d4"
$lettersOnly = $mixed -split { $_ -match '\d' }

字符串合并

使用单目 -join 运算符将字符串数组连接为单个字符串。

$combined = -join @("P", "S", "1")

使用双目 -join 运算符指定分隔符连接字符串数组。

$pathParts = @("C:", "Users", "Admin", "Documents")
$fullPath = $pathParts -join "\"

使用 Join-String cmdlet 进行更复杂的字符串连接操作。

$joined = 1..3 | Join-String -Separator " -> " -DoubleQuote

使用 [String]::Join() 静态方法连接字符串数组。

$values = @("Alpha", "Beta", "Gamma")
$result = [String]::Join("; ", $values)

大小写转换

使用 ToUpper() 方法将字符串转换为大写。

$uppercase = "mixed Case TEXT".ToUpper()

使用 ToLower() 方法将字符串转换为小写。

$lowercase = "MIXED Case TEXT".ToLower()

修剪字符串

使用 Trim() 方法移除字符串开头和结尾的所有空白字符。

$clean = "`n   padded text  `t".Trim()

使用 TrimStart() 方法仅移除字符串开头的空白字符。

$leftClean = "   left space".TrimStart()

使用 TrimEnd() 方法仅移除字符串结尾的空白字符。

$rightClean = "right space   ".TrimEnd()

使用 Trim() 方法的重载版本同时移除开头和结尾的特定字符。

$cleanNumber = "  0206.0800".Trim(' ', '0')
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容