PowerShell - [решено] Разделение строки через n символ

Ответить
Аватара пользователя
ivan.vas

PowerShell - [решено] Разделение строки через n символ

Сообщение ivan.vas »

Добрый день.

Подскажите, возможно ли такое сделать на 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;
Аватара пользователя
alpap

Re: PowerShell - [решено] Разделение строки через n символ

Сообщение alpap »

если строка полноценная в смысле форматирования, то можно так:



Код:

Код: Выделить всё

$line = 'a;b;c;d;e;f;g;a;b;c;d;e;f;g;a;b;'
[regex]::Matches($line,'([^;];){4}').Value

иначе надо понимать какой формат будет (бывает, может быть) у строки - делится ли она нацело на 4, имеет знак ";" в конце строки, чтобы понимать учитывать это или дописывать в строку (менять ее или нет) или делать расчеты предварительные.
Аватара пользователя
ivan.vas

Re: PowerShell - [решено] Разделение строки через n символ

Сообщение ivan.vas »

Цитата alpap:



иначе надо понимать какой формат будет
PowerShell - [решено] Разделение строки через n символ




получается если строка имеет спецсимволы + отдельные знаки препинания, то нужно это тоже учитывать?
Аватара пользователя
Fors1k

Re: PowerShell - [решено] Разделение строки через n символ

Сообщение Fors1k »

Цитата ivan.vas:



строка имеет спецсимволы + отдельные знаки препинания
PowerShell - [решено] Разделение строки через n символ




Приведите пример.
Аватара пользователя
ivan.vas

Re: PowerShell - [решено] Разделение строки через n символ

Сообщение ivan.vas »

Цитата Fors1k:



Приведите пример.
PowerShell - [решено] Разделение строки через n символ




Пример вот такой:



Код:

Код: Выделить всё

111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;

Разделение - ;
Аватара пользователя
Fors1k

Re: PowerShell - [решено] Разделение строки через n символ

Сообщение Fors1k »

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 
Аватара пользователя
alpap

Re: PowerShell - [решено] Разделение строки через n символ

Сообщение alpap »

если брать приведенную вначале строку и не учитывать ничего, то можно так (получим то что получим)



Код:

Код: Выделить всё

$line = 'a;b;c;d;e;f;g;a;b;c;d;e;f;g'
$line -Replace '([^;];){4}', "$&`r`n"
Аватара пользователя
YuS_2

Re: PowerShell - [решено] Разделение строки через n символ

Сообщение YuS_2 »

Цитата 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^;

Разделение - ;
PowerShell - [решено] Разделение строки через n символ






Код:

Код: Выделить всё

$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}}

- делить строку будет по каждому третьему ";"
Ответить

Вернуться в «Скриптовые языки администрирования Windows»