2017-01-01 3 views
2

У меня есть массив, и когда я пытаюсь добавить строку к нему, массив преобразуется в одну строку.Добавление строки к каждому элементу массива

У меня есть следующие данные в массиве:

$Str 
451 CAR,-3 ,7 ,10 ,0 ,3 , 20 ,Over: 41 
452 DEN «,40.5,0,7,0,14, 21 ,  Cover: 4 

И я хочу добавить в неделю игры в этом случае, как это:

$Str = "Week"+$Week+$Str 

Я получаю одну строку:

Week16101,NYG,42.5 ,3 ,10 ,3 ,3 , 19 ,Over 43 102,PHI,- 1,14,7,0,3, 24 ,  Cover 4 103, 

Конечно, я хотел бы, чтобы приложение появлялось в каждой строке.

+0

Чтобы яснее представить наблюдателю, я бы рекомендовал повторно назвав вашу переменную, поскольку имя «str» может заставить людей думать, что у вас должна быть одна скалярная строковая переменная ... просто мысль! –

ответ

2

Что-то вроде этого будет работать для добавления/добавления текста к каждой строке массива.

Set массив $ ул:

$str = "apple","lemon","toast" 

$str 
apple 
lemon 
toast 

Prepend Теперь текст:

for ($i=0; $i -lt $Str.Count; $i++) { 
    $str[$i] = "yogurt" + $str[$i] 
} 

$str 
yogurtapple 
yogurtlemon 
yogurttoast 

Это работает для Предварение/добавления статического текста в каждой строке. Если вам нужно вставить переменную изменения, это может потребовать некоторой модификации. Мне нужно будет увидеть больше кода, чтобы что-то рекомендовать.

2

Вместо того, чтобы цикл можно также использовать Foreach-Object Командлет (если вы предпочитаете использовать трубопровод):

$str = "apple","lemon","toast" 
$str = $str | ForEach-Object {"Week$_"} 

Выход:

Weekapple 
Weeklemon 
Weektoast 
+0

Мне нравится этот ответ. Это проще для чтения и лучше для одноразовых сценариев. Однако для более длинного сценария, где требуется больше контроля, я думаю, что мой ответ лучше подходит. Просто зависит от приложения. –

0

Еще один вариант для PowerShell v4 +

$str = $str.ForEach({ "Week" + $Week + $_ })