给定要从字符串中提取的值,其中每个值都由开始字符和结束字符包围,那么实现这一点的最有效方法是什么?
例如,要获取包含值的数组:a、b、c
$mystring = "=a; =b; =c;"
$CharArray = $mystring.Split("=").Split(";")
发布于 2020-06-29 15:08:21
有许多-replace
、-split
、.Split()
和.Replace()
的组合可用于此任务。下面是一些示例:
# Since each element is separated by a space, you can replace extraneous characters first
# -split operator alone splits by a space character
# This can have issues if your values contain spaces too
($mystring -replace '=|;').Split(' ')
-split ($mystring -replace '=|;')
# Since splitting creates white space at times, `Trim()` handles that.
# Because you expect an array after splitting, -ne '' will only return non-empty elements
$mystring.Split("=").Split(";").Trim() -ne ''
# Creates a array of of System.Char elements. Take note of the type here as it may not be what you want.
($mystring -replace ' ?=|;').ToCharArray()
# Uses Split(String[], StringSplitOptions) method
($myString -replace ' ?=').Split(';',[StringSplitOptions]::RemoveEmptyEntries)
发布于 2020-06-29 15:50:26
大卫,你所拥有的看起来很好,但这里有另一种方法。-replace方法处理空格(“")和等号(=)。
$mystring = "=a; =b; =c;"
$CharArray = $mystring -split ";" -replace " |=",""
https://stackoverflow.com/questions/62640804
复制相似问题