我是PowerShell的新手,我试图弄清楚如何将长字符串拆分为预定义的固定长度变量: 例如下面的字符串是30个字符长,我需要分成不同的固定长度,例如前2个字符,然后是8个字符,然后是9个字符,然后是1个字符,然后是5个字符,然后是3个字符,然后是2个字符(总共30个字符) $ Inputlongtext =“” 123qwert5678990asdfghm09876564“ 我需要的输出是: $ out1为12 $ out2作为3qwert56 $ out2为78990asdf $ out2 as g $ out2为hm098 $ out2为765 $ out2为64 任何帮助将不胜感激! 谢谢,
答案 0 :(得分:1)
可以使用SubString方法拆分字符串:
.Substring( StartIndex [, length] )
例如
$out1 = $Inputlongtext.SubString(0,2)
$out2 = $Inputlongtext.SubString(3,8)
$out3 = $Inputlongtext.SubString(11,9)
答案 1 :(得分:1)
[编辑-添加了丢失的$Null =
,以禁止来自True
的{{1}}。]
[编辑2-添加了键排序以按源顺序返回对象。]
这是完成这项工作的一种怪异方法。 [ grin ]它使用正则表达式-match
选项来捕获特定数量的匹配字符。然后它会从自动变量{count}
中获取非0
键,并查找值。最后,它将值发送到$Matches
集合。
$Results
输出...
$LongText= "123qwert5678990asdfghm09876564"
$Null = $LongText -match '(?<P1>.{2})(?<P2>.{8})(?<P3>.{9})(?<P4>.{1})(?<P5>.{5})(?<P6>.{3})(?<P7>.{2})'
$Results = @($Matches.Keys.Where({$_ -ne 0}) |
Sort-Object ).
ForEach({$Matches[$_]})
$Results