Powershell convert string to array

16,059

Solution 1

I would use the -split regex operator, like so:

$text = -split $text

You can also use it directly in the foreach() loop declaration:

foreach($fruit in -split $text)
{
    "$fruit is a fruit"
}

In unary mode (like above), -split defaults to splitting on the delimeter \s+ (1 or more whitespace characters).

This is nice if a user accidentally enters consecutive spaces:

PS C:\> $text = Read-Host 'Input fruit names'
Input fruit names: Apple Pear   Peaches  Banana
PS C:\> $text = -split $text
PS C:\> $text
Apple
Pear
Peaches
Banana

Solution 2

Use Split()

$text = $text.Split(" ")
Share:
16,059
nixgeek
Author by

nixgeek

Updated on June 09, 2022

Comments

  • nixgeek
    nixgeek almost 2 years

    How do I change:

    $Text = "Apple Pear Peach Banana"
    

    to

    $Text = @("Apple", "Pear", "Peach", "Banana")
    

    I am planning to feed the array to a foreach loop. The input the user is prompted to enter fruit with a space between (I will use Read-Host for that). So then I need to convert a space-separated string to an array for the foreach loop.

    Thank you...