pf-prefix_suffix.ps1
function Add-Prefix($prefix) { process { [string]$value = "$_" if ( -not $value.StartsWith( $prefix) ) { $value = $prefix + $value } return $value } } Describe Add-Prefix { it Test { 'bcde' | Add-Prefix 'a' | Should -Be 'abcde' $null | Add-Prefix 'a' | Should -Be 'a' } } function Add-Suffix ($Suffix) { process { [string]$value = "$_" if ( -not $value.EndsWith($Suffix) ) { $value = $value + $Suffix } return $value } } Describe Add-Suffix { it { 'abcd' | Add-Suffix 'e' | Should -Be 'abcde' $null | Add-Suffix 'e' | Should -Be 'e' } } function Update-Prefix ($prefix, $replace = '', [Switch]$Required) { begin { if ( $null -eq $prefix ) { $prefix = '' } } process { $value = "$_" if ( $value -and $value.StartsWith($prefix, [System.StringComparison]::InvariantCultureIgnoreCase ) ) { return $replace + $value.SubString( $prefix.Length ) } if ( $Required ) { throw "'$prefix' is not a prefix of '$value' " } return $value } } function Update-Prefix:::Test { 'abc', 'aab' | Update-Prefix -replace 'Z_' | Assert 'Z_abc', 'Z_aab' 'abc', 'aab' | Update-Prefix 'a' | Assert 'bc', 'ab' 'Abc', 'aab' | Update-Prefix 'a' | Assert 'bc', 'ab' { 'abc', 'aab' | Update-Prefix 'z' -Required } | assert -throw 'is not a prefix' } function Update-Suffix ($Suffix, $replace = '', [Switch]$Required) { begin { if ( $null -eq $Suffix ) { $Suffix = '' } } process { $value = "$_" if ( $value -and $value.EndsWith($Suffix, [System.StringComparison]::InvariantCultureIgnoreCase ) ) { return $value.SubString( 0, $value.length - $Suffix.Length ) + $replace } if ( $Required ) { throw "'$Suffix' is not a Suffix of '$value' " } return $value } } function Update-Suffix:::Test { 'abc', 'aab' | Update-Suffix -replace '_Z' | Assert 'abc_Z', 'aab_Z' 'abc', 'aab' | Update-Suffix 'b' | assert 'abc', 'aa' 'abc', 'aaB' | Update-Suffix 'b' | assert 'abc', 'aa' { 'abc', 'aab' | Update-Suffix 'z' -Required } | assert -throw 'is not a Suffix' } |