
¡Identificando esos molestos personajes ocultos!
De vez en cuando, al manipular cadenas, suceden cosas extrañas que pueden ser difíciles de descubrir.
- ¿Por qué hay un salto de línea?
- ¿Por qué hay un espacio?
- …
¡Aquí es cuando ejecutar la cadena de texto a través de una función de conversión ASCII puede arrojar algunas respuestas!
'---------------------------------------------------------------------------------------
' Procedure : String_ConvertToASCII
' Author : Daniel Pineault, CARDA Consultants Inc.
' Website :
' Purpose : Converts a string into its numeric ascii representation
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
' (CC BY-SA 4.0) -
' Req'd Refs: None required
'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' sInput : String to output as ascii numerals
' sSeparator: Separator to use between numerals (default to using ,)
'
' Usage:
' ~~~~~~
' ? String_ConvertToASCII("testing.")
' Returns -> 116,101,115,116,105,110,103,46
'
' Revision History:
' Rev Date(yyyy-mm-dd) Description
' **************************************************************************************
' 1 unknown Initial Release
' 2 2024-06-05 Public Release
' 3 2024-06-05 Fix issue related to Asc vs. AscW
' Added optional HTML Output
'---------------------------------------------------------------------------------------
Public Function String_ConvertToASCII(ByVal sInput As String, _
Optional sSeparator As String = ",", _
Optional bOutputAsHTML As Boolean = False) As String
On Error GoTo Error_Handler
Dim lAsciiVal As Long
Dim i As Long
If Len(sInput) = 0 Then GoTo Error_Handler_Exit
For i = 1 To Len(sInput)
lAsciiVal = AscW(Mid(sInput, i, 1)) 'Inverse => Chr(#) or ChrW() if # > 255
If lAsciiVal 0 Then 'remove trailing separator
String_ConvertToASCII = Left(String_ConvertToASCII, Len(String_ConvertToASCII) - Len(sSeparator))
End If
Error_Handler_Exit:
On Error Resume Next
Exit Function
Error_Handler:
MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
"Error Source: String_ConvertToASCII" & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occurred!"
Resume Error_Handler_Exit
End Function
La salida le permitirá revisar los caracteres presentes, incluso aquellos que necesariamente podrá ver al ‘imprimir’ la cadena en la ventana inmediata, lo que le permitirá tomar las medidas necesarias para reemplazar o eliminar contenido extraño o inesperado.
Así que puedes usarlo para procesar cualquier cadena:
? String_ConvertToASCII("testing.")
Lo que generará algo como:
116,101,115,116,105,110,103,46
Luego puede revisar estos valores de salida comparándolos con tablas ASCII como:




Y más allá de los 255, tenemos que recurrir a otros conjuntos de caracteres. Una referencia al respecto sería:


Si está buscando algunos textos de muestra para probar funciones de cadena, puede consultar:

