Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Разделение строки через n символ (http://forum.oszone.net/showthread.php?t=349798)

ivan.vas 14-10-2021 11:28 2968778

Разделение строки через 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;


alpap 14-10-2021 13:06 2968801

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

$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 14-10-2021 14:53 2968814

Цитата:

Цитата alpap
иначе надо понимать какой формат будет »

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

Fors1k 14-10-2021 16:36 2968826

Цитата:

Цитата ivan.vas
строка имеет спецсимволы + отдельные знаки препинания »

Приведите пример.

ivan.vas 14-10-2021 17:00 2968829

Цитата:

Цитата Fors1k
Приведите пример. »

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

111.44.77.99;qwe@wqe.wqe;123!@#$1*{];11.777.999.05;qwe-23@wqe@aa.ff;!Q@W#Er$t%Y^;
Разделение - ;

Fors1k 14-10-2021 17:18 2968832

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


ivan.vas 14-10-2021 17:34 2968834

Цитата:

Цитата Fors1k
тут 6 кусков. »

Отвлекли, когда пример печатал. :(

Спасибо!

alpap 14-10-2021 17:41 2968836

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

$line = 'a;b;c;d;e;f;g;a;b;c;d;e;f;g'
$line -Replace '([^;];){4}', "$&`r`n"


YuS_2 14-10-2021 22:30 2968845

Цитата:

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

Время: 06:37.
© OSzone.net 2001-