Обновление массива простой конкатенации строк в Powershell - PullRequest
0 голосов
/ 03 мая 2019

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

Конкатенация обновления элементов массива, по-видимому, не происходит.

$Constant = "somestring"
[String[]]$Strings = Get-Content ".\strings.txt"

foreach ($Element in $Strings) {
  $Element = "$Element$Constant"
}

$Strings

приводит кследующий вывод:

Element
Element
...

Следуя подсказке о неизменности массивов в Powershell, я попытался создать новый массив с объединенными значениями.Тот же результат.

Что мне здесь не хватает?

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Просто чтобы показать альтернативную итерацию индексов массива

$Constant = "somestring"
$Strings = Get-Content ".\strings.txt"

for($i=0;$i -lt $Strings.count;$i++) {
  $Strings[$i] += $Constant
}

$Strings

Пример вывода с файлом. \ Strings.txt, содержащим один, два, три

onesomestring
twosomestring
threesomestring
1 голос
/ 03 мая 2019

вы объединяете значения с локальной переменной $Element, но это не меняет переменную $Strings

вот мой подход, сохраняя новые значения в $ConcateStrings. возвращая объединенную строку и не назначая ее локальной переменной, переменная $ConcateStrings будет иметь все новые значения

$Constant = "somestring"
$Strings = Get-Content ".\strings.txt"

$ConcateStrings = foreach ($Element in $Strings) {
    "$Element$Constant"
}

$ConcateStrings
...