Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Powershell convert string to array

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...

like image 770
nixgeek Avatar asked Jan 03 '23 22:01

nixgeek


2 Answers

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
like image 79
Mathias R. Jessen Avatar answered Jan 14 '23 00:01

Mathias R. Jessen


Use Split()

$text = $text.Split(" ")
like image 35
ArcSet Avatar answered Jan 14 '23 02:01

ArcSet