PowerShell 技能连载 - 以固定宽度分割文本
假设您需要以固定宽度分割一段文本。例如,如果您需要一段文本的前 5 个字符,以及剩余的部分,如何实现它?
大多数 PowerShell 用户可能会用类似这样的方法:
1 | $text = 'ID12:Here is the text'$prefix = $text.Substring(0,5)$suffix = $text.Substring(5)$prefix$suffix |
当然,如果用分割字符,例如 “:”,可以这样操作:
1 | $prefix, $suffix = 'ID12:Here is the text' -split ':'$prefix$suffix |
然而,这将会吃掉分割字符,并且它会导致超过两个部分。这不是我们要的目标:用固定宽度分割一段文本。而您仍然可以使用 -split
操作符:
1 | $prefix, $suffix = 'ID12:Here is the text' -split '(?<=^.{5})'$prefix$suffix |
正则表达式结构 “(?<=XXX)
“ 称为“向后引用”。”^
“ 代表文本的开始,而 “.
“ 代表任何字符。如您猜测的那样,”{5}
“ 限定该占位符出现的次数,所以基本上这个正则表达式从剩下的文本中分割出前 5 个字符并且返回两部分(假设文本至少 6 个以上字符长度)。
PowerShell 技能连载 - 以固定宽度分割文本
http://blog.vichamp.com/2019/05/18/splitting-texts-by-fixed-width/