Do you want to replace a string in a PowerShell array? In this PowerShell tutorial, I will explain how to replace a string in an array using PowerShell.
To replace a string in a PowerShell array, use a loop to iterate through the elements and conditionally assign a new value when a match is found. For example, with $myArray -eq 'oldString'
, use $myArray[$i] = 'newString'
within a for
loop to replace ‘oldString’ with ‘newString’. This method ensures that each instance of the string is replaced throughout the array.
Replace a String in an Array Using PowerShell
First, let’s create an array in PowerShell. An array is a data structure that stores a collection of items. You can create an array by assigning multiple values to a variable:
$myArray = 'apple', 'banana', 'cherry', 'date'
Decide which string you want to replace. For example, let’s say we want to replace 'banana'
with 'blueberry'
.
To replace a string in an array, you can use a foreach
loop to iterate through each item or use the for
loop if you need to know the index. Here’s how you can do it with a foreach
loop:
for ($i = 0; $i -lt $myArray.Length; $i++) {
if ($myArray[$i] -eq 'banana') {
$myArray[$i] = 'blueberry'
}
}
And here’s with a foreach
loop:
foreach ($item in $myArray) {
if ($item -eq 'banana') {
$index = [array]::IndexOf($myArray, $item)
$myArray[$index] = 'blueberry'
}
}
PowerShell also provides a -replace
operator that you can use to replace text within strings. This can be combined with a foreach
loop to replace strings within an array:
$myArray = $myArray | ForEach-Object { $_ -replace 'banana', 'blueberry' }
This command passes each element of $myArray
through a pipeline, and for each object ($_
), it replaces 'banana'
with 'blueberry'
.
After running the replacement, you can check the contents of the array to ensure the string has been replaced:
$myArray
This will output the contents of the array, and you should see 'blueberry'
in place of 'banana'
.
Below is a complete PowerShell script demonstrating how to replace a specific string within an array.
# PowerShell Script to Replace a String in an Array
# Define the array with initial values
$myArray = 'apple', 'banana', 'cherry', 'date'
# Display the original array
Write-Host "Original Array: " -ForegroundColor Green
$myArray
# The string to search for
$searchString = 'banana'
# The string to replace with
$replacementString = 'blueberry'
# Loop through the array and replace the string
for ($i = 0; $i -lt $myArray.Length; $i++) {
if ($myArray[$i] -eq $searchString) {
$myArray[$i] = $replacementString
}
}
# Alternatively, using the -replace operator with ForEach-Object
# $myArray = $myArray | ForEach-Object { $_ -replace $searchString, $replacementString }
# Display the modified array
Write-Host "Modified Array: " -ForegroundColor Cyan
$myArray
Once you run the code, you can see the output in the screenshot below:
Conclusion
In this PowerShell tutorial, you’ve learned how to replace a string in an array in PowerShell.
You may also like:
- PowerShell Replace() Method
- PowerShell Replace with Regular Expressions (regex)
- PowerShell If Date Is Older Than 30 Days
- How to Get-Date Without Time in PowerShell?
I am Bijay a Microsoft MVP (10 times – My MVP Profile) in SharePoint and have more than 17 years of expertise in SharePoint Online Office 365, SharePoint subscription edition, and SharePoint 2019/2016/2013. Currently working in my own venture TSInfo Technologies a SharePoint development, consulting, and training company. I also run the popular SharePoint website EnjoySharePoint.com