How can you replace the last occurrence of a substring in a string?
Regular Expressions can also perform this task. Here is an example of one that would work. It will replace the last occurrence of "Aquarius" with "Bumblebee Joe"
$text = "This is the dawning of the age of Aquarius. The age of Aquarius, Aquarius, Aquarius, Aquarius, Aquarius"
$text -replace "(.*)Aquarius(.*)", '$1Bumblebee Joe$2'
This is the dawning of the age of Aquarius. The age of Aquarius, Aquarius, Aquarius, Aquarius, Bumblebee Joe
The greedy quantifier ensure that it take everything it can up until the last match of Aquarius
. The $1
and $2
represent the data before and after that match.
If you are using a variable for the replacement you need to use double quotes and escape the $
for the regex replacements so PowerShell does not try to treat them as a variable
$replace = "Bumblebee Joe"
$text -replace "(.*)Aquarius(.*)", "`$1$replace`$2"
Using the exact same technique as I would in C#
:
function Replace-LastSubstring {
param(
[string]$str,
[string]$substr,
[string]$newstr
)
return $str.Remove(($lastIndex = $str.LastIndexOf($substr)),$substr.Length).Insert($lastIndex,$newstr)
}
print(str1[::-1].replace("xx","rr",1)[::-1])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With