Войти

Показать полную графическую версию : Разложить строку по переменным.


garm
13-10-2020, 03:18
Всем привет! Есть массив данных вида:
Иван:Петров:1985
Виктор:Иванов:1963
И т.д.
Нужно разложить по переменным каждое значение, чтоб было:
$a = Иван
$b = Петров
$c = 1985.
Может кто-то знает как сделать? Уже голову изломал)

Foreigner
13-10-2020, 07:54
Есть массив данных »

Где?

Отдельную строку из массива данных:

$a,$b,$c = 'Иван:Петров:1985' -split ':'

DJ Mogarych
13-10-2020, 16:03
А смысл? Первая строка разложена на переменные, а со второй что делать? Перезаписывать переменные, полученные из первой строки?

Iska
13-10-2020, 17:36
Перезаписывать переменные, полученные из первой строки? »
Обычно так и делают.

garm
13-10-2020, 21:14
Где? »
Загружается из файла. Ваш вариант работает, но непонятно, как обрабатывать это циклом. Принцип таков, что мы загружаем данные в массив из тхт файла, а затем берем строку и кладем в переменную. Из переменной не хочет раскладывать))

YuS_2
13-10-2020, 22:39
Может кто-то знает как сделать? Уже голову изломал »
Легко. И даже уже показали как.
Принцип таков, что мы загружаем данные в массив из тхт файла, а затем берем строку и кладем в переменную. »
Вопрос только в том, какова конечная цель задачи. Об этом Вы, почему-то, умалчиваете.
А именно:
Образец исходных данных и не пример одной строки, а реальный файл/часть файла (сами данные можете изменить, в целях конфиденциальности) с определенной кодировкой, с указанием примерного размера и т.д.
Выходные данные - в каком виде их необходимо получать (вывод на консоль, в файл или ещё куда). В общем, необходимы исходные данные.
Покажите суть задачи и тогда, возможно, Вам подскажут как её правильно решить. А принципы различных "костылей", мы Вам и так можем показать стотыщвариантов... :)

Foreigner
13-10-2020, 23:03
garm,


foreach ($line in (Get-Content file.txt))
{
$a,$b,$c = $line.Split(':')

что-то делаем с $a, $b и $с
}


Напишите подробней, что должно быть в результате. Если весь файл в таком формате, то его можно обрабатывать и как CSV.

greg zakharov
14-10-2020, 11:27
foreach ($line in (Get-Content file.txt))...Если весь файл в таком формате, то его можно обрабатывать и как CSV.
Не можно, а нужно, так как на выходе получим массив PSCustomObject и тогда всякая блажь загонять каждую строку в отдельности по переменным отпадёт. А вот если бы разделителей было несколько, или по тексту встречались символы, например, хангыль, то лучше сделать нечто вроде токенизации (http://forum.oszone.net/showpost.php?p=2936056&postcount=6).

DJ Mogarych
14-10-2020, 12:18
Обычно так и делают »
...сохраняя память предков, передавших нам идеалы и веру в Бога, а также преемственность в развитии Российского государства.




© OSzone.net 2001-2012