BryanSky BryanSky - 4 months ago 22
PowerShell Question

Issue with String Manipulation in Powershell TrimEnd()

I have this PowerShell script that renames a file. The following is part of the string manipulation code (not my actual code, just to show the issue):

$text="String1.txt"
$text
$text.trimend(".txt")
$date=Get-Date -format yyyyMMdd
$text + $date
$newFile = $text.trimend(".txt") + "_" + $date + ".bak"
$newFile
$NewFile1 = $newFile.TrimEnd("_$date.bak") + ".bak"
$NewFile1


The result is:

String1.txt
String1
String1.txt20131104
String1_20131104.bak
String.bak


Why was the
1
at the end of
String1
removed as well? I am expecting the result to be
String1.bak
.

Answer

The trimend() method takes a character array (not string) argument, and will trim all of the characters in the array that appear at the end of the string.

I usually use the -replace operator for trimming off a string value:

$text="String1.txt"
$text 
$text = $text -replace '\.txt$',''
$text

String1.txt
String1