Lo primero fue obtener el código ASCII del caracter no válido en la cadena:
? "No es un signo de pregunta"... es un caractér no representable:
$cadena = 'FG?'
#Obtener los códigos ASCII [int[]][char[]]$cadena
70
71
65533
? debería ser una Ñ, que es:
PS C:\> [int][char]"Ñ"
209
Recreando la cadena con el código correcto, recuperamos la Ñ:
el 99% de las veces tenemos que tratar los caracteres con la tabla correspondiente (UTF8, ASCII, etc), pero cuando el tema se pone duro, "las cosas a la vieja usanza" :)
function Reemplazar-Caracter { Param ( [parameter(Mandatory=$true)][string][ValidateNotNullOrEmpty()]$txt,` [parameter(Mandatory=$true)][int][ValidateNotNullOrEmpty()]$CarAnt,` [parameter(Mandatory=$true)][int][ValidateNotNullOrEmpty()]$CarNuevo ) Write-Host -ForegroundColor green $txt Write-Host -ForegroundColor cyan $([int[]][char[]]$txt) [string]$txtnuevo = $null foreach ($ascii in ([int[]][char[]]$txt)) { if ($ascii -eq $CarAnt) { $txtnuevo = $txtnuevo + [char]$CarNuevo } else { $txtnuevo = $txtnuevo + [char]$ascii } } return $txtnuevo }
No hay comentarios.:
Publicar un comentario