字符串搜索
通配符匹配
使用 -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')