Quantcast
Channel: PowerShell.com – PowerShell Scripts, Tips, Forums, and Resources: Active Threads
Viewing all articles
Browse latest Browse all 8411

Having a problem with a function that replaces text

$
0
0

I was in need of a function that replaces non-English characters with English alphabet equivalents and I found one in the net. I only needed to fill in blanks and it was good to go. Except not.


Function Remove-SpecialCharacters {
    [CmdletBinding()]
    Param(
        [Parameter(
            Mandatory = $true,
            Position = 1,
            ValueFromPipeline = $true,
            ValueFromPipelineByPropertyName = $true
        )]
        [Alias("Input")]
        [string] $InputString
    )
    Begin {}
    Process {
        $InputString = $InputString.Replace(' ','')
        $InputString = $InputString.Replace('á','a')
        $InputString = $InputString.Replace('Á','A')
        $InputString = $InputString.Replace('à','a')
        $InputString = $InputString.Replace('À','A')
        $InputString = $InputString.Replace('â','a')
        #$InputString = $InputString.Replace('Â','A')
        $InputString = $InputString.Replace('ä','a')
        $InputString = $InputString.Replace('Ä','A')
        $InputString = $InputString.Replace('å','a')
        $InputString = $InputString.Replace('Å','A')
        $InputString = $InputString.Replace('Æ','AE')
        $InputString = $InputString.Replace('æ','ae')
        $InputString = $InputString.Replace('ã','a')
        $InputString = $InputString.Replace('Ã','A')
        $InputString = $InputString.Replace('ç','c')
        $InputString = $InputString.Replace('é','e')
        $InputString = $InputString.Replace('É','E')
        $InputString = $InputString.Replace('è','e')
        $InputString = $InputString.Replace('È','E')
        $InputString = $InputString.Replace('ê','e')
        $InputString = $InputString.Replace('Ê','E')
        $InputString = $InputString.Replace('ë','e')
        $InputString = $InputString.Replace('Ë','E')
        $InputString = $InputString.Replace('í','i')
        $InputString = $InputString.Replace('Í','I')
        $InputString = $InputString.Replace('ì','i')
        $InputString = $InputString.Replace('Ì','I')
        $InputString = $InputString.Replace('î','i')
        $InputString = $InputString.Replace('Î','I')
        $InputString = $InputString.Replace('ï','i')
        $InputString = $InputString.Replace('Ï','I')
        $InputString = $InputString.Replace('ñ','n')
        #$InputString = $InputString.Replace('Ñ','N')
        $InputString = $InputString.Replace('ó','o')
        $InputString = $InputString.Replace('Ó','O')
        $InputString = $InputString.Replace('ò','o')
        #$InputString = $InputString.Replace('Ò','O')
        $InputString = $InputString.Replace('ô','o')
        $InputString = $InputString.Replace('Ô','O')
        $InputString = $InputString.Replace('ö','o')
        $InputString = $InputString.Replace('Ö','O')
        $InputString = $InputString.Replace('õ','o')
        $InputString = $InputString.Replace('Õ','O')
        $InputString = $InputString.Replace('ø','O')
        $InputString = $InputString.Replace('Ø','o')
        $InputString = $InputString.Replace('ú','u')
        $InputString = $InputString.Replace('Ú','U')
        $InputString = $InputString.Replace('ù','u')
        $InputString = $InputString.Replace('Ù','U')
        $InputString = $InputString.Replace('û','u')
        $InputString = $InputString.Replace('Û','U')
        $InputString = $InputString.Replace('ü','u')
        $InputString = $InputString.Replace('Ü','U')
        $InputString = $InputString.Replace('ý','y')
        $InputString = $InputString.Replace('Ý','Y')
        $InputString = $InputString.Replace('ð','')
        $InputString = $InputString.Replace('Ð','')   
        $InputString = $InputString.Replace('þ','')
        $InputString = $InputString.Replace('Þ','')
        $InputString = $InputString.Replace('ß','')
       
        $strOutput = [System.Text.RegularExpressions.Regex]::Replace($InputString,"[^0-9a-zA-Z_]","")
        Write-Output $strOutput
    }
    End {}
}

The lines that have been commented out are giving me trouble. The weird thing is that this seems to only occur on these uppercase letters, lowercase letters that come right before them are working fine.

The errors are as follows


Missing ')' in method call.
At function.ps1:21 char:45
+         $InputString = $InputString.Replace('Ã'',' <<<< A')
    + CategoryInfo          : ParserError: (CloseParenToken:TokenId) [], ParseException
    + FullyQualifiedErrorId : MissingEndParenthesisInMethodCall


The string starting:
At function.ps1:75 char:42
+         $InputString = $InputString.Replace('ÃY <<<< ','')
is missing the terminator: '.
At function.ps1:81 char:2
+ } <<<<
    + CategoryInfo          : ParserError: (,'')

        $st...
    }
    End {}
}:String) [], ParseException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString


The string starting:
At function.ps1:77 char:91
+         $strOutput = [System.Text.RegularExpressions.Regex]::Replace($InputString,"[^0-9a-zA-Z_] <<<< ","")
is missing the terminator: ".
At function.ps1:81 char:2
+ } <<<<
    + CategoryInfo          : ParserError: (,`")
        Write-O...
    }
    End {}
}:String) [], ParseException
    + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString

Anyone have any ideas as to why this is happening and how to fix? Thank you very much.


Viewing all articles
Browse latest Browse all 8411

Latest Images

Trending Articles



Latest Images