Разбиение длинной текстовой строки на заданную фиксированную длину - PullRequest
0 голосов
/ 13 мая 2019

Я новичок в PowerShell, я пытаюсь выяснить, как можно разделить длинную строку на предварительно определенные переменные фиксированной длины: например, длина строки составляет 30 символов, и мне нужно разделить на разные фиксированные длины, как первые 2 символа,затем 8 символов, затем 9 символов, затем 1 символ, затем 5 символов, затем 3 символа, затем 2 символа (всего 30).g $ out2 как hm098 $ out2 как 765 $ out2 как 64 Любая помощь будет оценена!Спасибо,

Ответы [ 2 ]

1 голос
/ 13 мая 2019

[edit - добавлено отсутствие $Null = для подавления нежелательных True из -match.]
[edit 2 - добавлена ​​сортировка ключей для возврата объектов в исходный кодпорядок.]

вот немного странный способ сделать работу.[ ухмылка ] используется опция regex {count} для получения определенного количества совпадающих символов.затем он извлекает не-1014 * ключи из автоматической переменной $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

вывод ...

12
3qwert56
78990asdf
g
hm098
765
64 
1 голос
/ 13 мая 2019

Строки могут быть разделены с помощью метода SubString:

.Substring( StartIndex [, length] )

, например

$out1 = $Inputlongtext.SubString(0,2)
$out2 = $Inputlongtext.SubString(3,8)
$out3 = $Inputlongtext.SubString(11,9)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...