Добавляйте запятую к каждому элементу в массиве строк

#powershell

#powershell

Вопрос:

Мне нужно добавлять запятую к каждой строке, мой код добавляет «,» к последнему элементу, а также как это устранить

 for($j=0; $j -lt $back_log_bloblist.Count; $j  ){
        if($back_log_bloblist[$j].Name -like "$Value"){
            $string  = $back_log_bloblist[$j].Name  ","
            Write-Host $string
        }
    }
 

Комментарии:

1. что вы НА САМОМ деле пытаетесь сделать? не запятые, какова ЦЕЛЬ, которую вы пытаетесь достичь. похоже, вы пытаетесь вручную создать csv-файл… и это почти всегда плохая идея. [ усмешка ]

Ответ №1:

Это можно решить намного проще без явного цикла:

 $string = ($back_log_bloblist.Name -like $Value) -join ','
 

Объяснение:

  • $back_log_bloblist.Name создает массив из значений Name свойства всех $back_log_bloblist элементов
  • -like $Value выбирает все элементы из этого массива, которые соответствуют шаблону в $Value
  • -join ',' наконец, объединяет все выбранные элементы (вставляя запятые только между элементами, а не после, именно то, что вы хотите)
  • вы могли бы убрать скобки, они просто для концептуальной ясности

Доказательство концепции:

 $back_log_bloblist = [pscustomobject]@{ Name='foo' }, 
                     [pscustomobject]@{ Name='fop' }, 
                     [pscustomobject]@{ Name='bar' }

$Value = 'f*'
$string = ($back_log_bloblist.Name -like $Value) -join ','
$string
 

Вывод:

 foo,fop