PowerShell中字符串操作""相关的异常行为咨询
问题1:
-split '.'返回空字符串数组的原因及解决办法 PowerShell的-split运算符默认使用正则表达式匹配分割符,正则里的.表示匹配任意单个字符。'a.b'包含3个字符(a、.、b),用任意字符作为分割符时,会把每个字符之间的位置都分割开,最终得到'', '', '', ''四个空字符串。
解决办法:
- 转义
.,让它按字面意义匹配:'a.b' -split '\.' # 返回 @('a', 'b') - 使用字符组包裹
.:'a.b' -split '[.]' # 返回 @('a', 'b') - 指定
SimpleMatch选项,强制按字面分割:'a.b' -split '.', 0, 'SimpleMatch' # 返回 @('a', 'b')
问题2:
TrimStart未得到预期结果的原因及解决办法 TrimStart方法的参数是字符集合,不是完整的前缀字符串。它会从字符串开头移除所有属于该集合的字符,直到遇到不在集合里的字符为止。'rodtipsqleastus2.'包含的字符有r、o、d、t、i、p、s、q、l、e、a、u、2、.,处理'rodtipsqleastus2.database.windows.net'时,开头的rodtipsqleastus2.会被移除,接下来的d、a、t也属于字符集合,会继续被移除,直到遇到b才停止,最终返回base.windows.net。
解决办法:
- 使用正则替换,匹配开头的指定前缀:
'rodtipsqleastus2.database.windows.net' -replace '^rodtipsqleastus2\.', '' - 确定前缀长度后用
Substring截取:$str = 'rodtipsqleastus2.database.windows.net' $prefix = 'rodtipsqleastus2.' $str.Substring($prefix.Length)
内容的提问来源于stack exchange,提问作者Lingxi
相关产品推荐
相关产品推荐

