Разделение строки через n символ
Добрый день.
Подскажите, возможно ли такое сделать на Powershell.
Есть текстовый файл с текстом разделенным (можно либо запятой либо точкой с запятой):
Код:
a;b;c;d;e;f;g;a;b;c;d;e;f;g
Возможно ли, пройтись по этой строке, найти разделить номер 4 и сделать новую строку, к примеру вот так:
Код:
a;b;c;d;
e;f;g;a;
b;c;d;e;
f;g;a;b;
|
если строка полноценная в смысле форматирования, то можно так:
Код:
$line = 'a;b;c;d;e;f;g;a;b;c;d;e;f;g;a;b;'
[regex]::Matches($line,'([^;];){4}').Value
иначе надо понимать какой формат будет (бывает, может быть) у строки - делится ли она нацело на 4, имеет знак ";" в конце строки, чтобы понимать учитывать это или дописывать в строку (менять ее или нет) или делать расчеты предварительные.
|
Цитата:
Цитата alpap
иначе надо понимать какой формат будет »
|
получается если строка имеет спецсимволы + отдельные знаки препинания, то нужно это тоже учитывать?
|
Цитата:
Цитата ivan.vas
строка имеет спецсимволы + отдельные знаки препинания »
|
Приведите пример.
|
Пример вот такой:
Код:
111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;
Разделение - ;
|
ivan.vas, тут 6 кусков. В таком случае должно быть 4 и 2 ?
Добавил немного универсальности к варианту alpap:
Код:
cls
$delimiter = ";"
$line = '111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;'
[regex]::Matches($line, "([^\$delimiter]+\$delimiter`?){1,4}").Value
|
Отвлекли, когда пример печатал. :(
Спасибо!
|
если брать приведенную вначале строку и не учитывать ничего, то можно так (получим то что получим)
Код:
$line = 'a;b;c;d;e;f;g;a;b;c;d;e;f;g'
$line -Replace '([^;];){4}', "$&`r`n"
|
Цитата:
Цитата ivan.vas
Пример вот такой:
Код:
111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;
Разделение - ; »
|
Код:
$str = '111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;'
$cnt=1;$str -split {if($_ -eq ";"){$global:cnt++%3 -eq 0}}
- делить строку будет по каждому третьему ";"
|
Время: 06:37.
© OSzone.net 2001-