Добавление к массиву добавляет пробел после новой строки - PullRequest
1 голос
/ 08 апреля 2020

Я добавляю строки в массив, чтобы потом вывести этот массив в файл, но после каждого нового добавления 1-й символ - это пробел. Я не хочу это место, как его удалить?

Вот мой пример кода:

$store += @('sample' + "`r`n")
$store += @('other' + "`r`n")
$store += @('new')

write-host $store

Это выводит

sample
 other
 new

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

В вашем массиве нет пробелов, просто отображается как Write-Host:

$store = @('sample')
$store += @('other')
$store += @('new')

write-host $store

Отображается:

sample other new

См. Также: Как удалить пробелы из этого массива PowerShell?

Кроме того, вывод по умолчанию (Write-Output) обычно добавляет новые строки (в соответствии с текущей системой):

$store

Отображает:

sample
other
new

Как и такие командлеты, как Add- Содержание do:

$store | Add-Content .\MyFile.txt

Это означает, что вы, вероятно, также не хотите создавать свои собственные новые строки ("`r`n") в своих элементах массивов. см. также: В чем разница между «Write-Host», «Write-Output» или «[console] :: WriteLine»?

Итог : Не должно быть необходимости добавлять или удалять разделители (пробелы или новые строки) для элементов массива, поскольку разделители не принимают участие в самом массиве, а только во время вывода, когда элементы обычно объединяются

$Store = @(
    'sample'
    'other'
    'new'
)
0 голосов
/ 08 апреля 2020

В качестве альтернативы, вы можете использовать ArrayList, когда хотите добавить новые элементы.

$store = @("sample","other","new")

# Define your ArrayList
$store = New-Object System.Collections.ArrayList(,$store)
...
...
$store.Add("newItem1") | Out-Null
...
...
$store.Add("newItem2") | Out-Null

Мы добавляем Out-Null для подавления Index добавленных элементов, записываемых в хост.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...