Как использовать Split () для элементов массива - PullRequest
0 голосов
/ 05 мая 2020

Я получаю ввод в виде массива строк

Input[0]:1
2
3
Input[1]:a
b
c
Input[2]:x
y
z
...

Я хочу использовать функцию разделения для каждого из этих элементов через al oop, чтобы я мог их изолировать. Я не возражаю, если это будет сделано путем создания группы массивов (Array0 [1,2,3]; Array1 [a, b, c]; ...) или путем создания многомерного массива, в зависимости от того, что лучше, но я Я борюсь с тем, как создать их в al oop.

EDIT: Я могу заставить его работать, как ожидалось, с той же настройкой с одним входом, который разделяется на массив (например, $ InputArr = $ InputArr.Split ("` n ")), но как только я пробую его с 2D-массивом, он не разделяется должным образом

Текущий код:

Function Read-example {
    [CmdletBinding()]
        param (
            [Parameter(Mandatory = $true)]
            [string[]]
            $InputArr
        )


    begin{
    }

    process {

        $InputArr[0] = $InputArr[0].Split("`n")
        Write-Host "Input 0 0: " $InputArr[0][0]
        Write-Host `n "Input 0 1: " $InputArr[0][1]
        Write-Host `n "Input 0 2: " $InputArr[0][2]

    }

Мой ввод:

InputArr[0]: 1a
1b
1c

А вывод:

 Input 0 0:  1

 Input 0 1:  a

 Input 0 2:  

1 Ответ

0 голосов
/ 05 мая 2020

Как вы отформатировали в вопросе, похоже, что строки в элементах массива разделены символами новой строки.

$arr = "1`r`n2`r`n3", "a`r`nb`r`nc", "x`r`ny`r`nz"

Если это так, просто l oop поверх массива $arr и разделите каждый элемент на этой новой строке:

for ($i = 0; $i -lt $arr.count; $i++) {
    $arr[$i] = $arr[$i] -split '\r?\n'
}

После этого в исходном массиве будут храниться подмассивы:

$arr[0].GetType() --> String[]
$arr[0][0]  --> 1
$arr[0][1]  --> 2
$arr[0][2]  --> 3

et c.

Вы это имеете в виду?

...