Quitar Puntos Separadores de Miles [SOLUCIONADO]

Manipulación de String y Formateo Numérico en Visual Basic

Dentro del universo de la programación es habitual el manejo de cifras numéricas, y como parte de ello, es común el uso de formatos que incluyen separadores de miles para mejorar la legibilidad de los números grandes. No obstante, al trabajar en entornos de programación como Visual Basic, es recurrente la necesidad de eliminar dichos separadores para realizar operaciones matemáticas o simplemente para homogeneizar el formato de los datos. En este extenso artículo, discutiremos los métodos para remover separadores de puntos en cadenas numéricas y cómo llevar a cabo esta tarea de forma efectiva.

Uso de la Función Replace

La función Replace de Visual Basic es una herramienta versátil que nos ayuda a modificar cadenas de texto reemplazando caracteres o secuencias de caracteres. El uso de esta función para deshacerse de los puntos de un número formateado es bastante directo. Aquí te mostramos un ejemplo práctico de cómo utilizarla:

            Dim numeroConPuntos As String = "1.234.567"
            Dim numeroSinPuntos As String
            numeroSinPuntos = numeroConPuntos.Replace(".", "")
        

En el código anterior, se declara una variable numeroConPuntos como una cadena de texto con un formato que incluye puntos como separadores de miles. Luego, mediante el uso de la función Replace, se sustituyen estos puntos por una cadena vacía, resultando en la eliminación completa de los separadores del número, almacenando el resultado en la variable numeroSinPuntos.

Consideraciones de Cultura y Formato Local

Es importante tener en cuenta que el separador de miles puede variar de acuerdo con la configuración regional o cultura del sistema operativo donde se ejecuta el código. En algunos lugares, el separador de miles es una coma (,), por lo cual el método anterior debería adaptarse para contemplar este caso.

            Dim numeroConComas As String = "1,234,567"
            Dim numeroSinComas As String
            numeroSinComas = numeroConComas.Replace(",", "")
        

Para cubrir ambos escenarios, podría considerarse el uso de una función que identifique automáticamente el separador de miles de la cultura actual y lo elimine:

            Public Function QuitarSeparadorDeMiles(cadena As String) As String
                Dim formatoActual As System.Globalization.NumberFormatInfo = System.Globalization.CultureInfo.CurrentCulture.NumberFormat
                Dim separadorDeMiles As String = formatoActual.NumberGroupSeparator
                Return cadena.Replace(separadorDeMiles, "")
            End Function
        

La función QuitarSeparadorDeMiles hace uso de la cultura actual para determinar el separador de miles y, posteriormente, realiza el reemplazo en la cadena proporcionada. De este modo, se garantiza que independientemente de la configuración regional del usuario, los separadores sean eliminados adecuadamente.

Tratamiento de Decimales y Búsqueda de Caracteres No Numéricos

Además de lidiar con los separadores de miles, en muchas ocasiones también es necesario prestar atención a los decimales, así como a la presencia de caracteres no numéricos que podrían interferir en el procesamiento de datos. Para solventar esto, se recomienda realizar una limpieza más exhaustiva de la cadena de texto:

            Public Function LimpiarCadenaNumerica(cadena As String) As String
                Dim caracterDecimal As String = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator
                Dim caracteresValidos As String = "0123456789" & caracterDecimal
                Dim cadenaLimpia As New System.Text.StringBuilder
                
                For Each c As Char In cadena
                    If caracteresValidos.Contains(c) Then
                        cadenaLimpia.Append(c)
                    End If
                Next

                Return cadenaLimpia.ToString()
            End Function
        

Con la función LimpiarCadenaNumerica, se lleva a cabo un procedimiento donde solamente los caracteres que sean dígitos numéricos o el signo decimal propios de la cultura actual serán conservados en la cadena resultante, eliminando cualquier otro carácter incluyendo los separadores de miles.

Tratamiento de Cifras con Formato Monetario

Es habitual encontrarse en la necesidad de manipular cifras numéricas con formato monetario, donde aparte de los separadores de miles, también podríamos tener símbolos de moneda y posiblemente paréntesis indicando cantidades negativas. Para atender estos casos, se puede expandir la función previa:

            Public Function LimpiarFormatoMonetario(cadena As String) As String
                Dim formatoActual As System.Globalization.NumberFormatInfo = System.Globalization.CultureInfo.CurrentCulture.NumberFormat
                Dim separadorDeMiles As String = formatoActual.NumberGroupSeparator
                Dim simboloMoneda As String = formatoActual.CurrencySymbol
                Dim caracterDecimal As String = formatoActual.CurrencyDecimalSeparator
                Dim cadenaLimpia As String

                ' Elimina símbolo de moneda y separador de miles
                cadenaLimpia = cadena.Replace(simboloMoneda, "").Replace(separadorDeMiles, "")

                ' Procesa paréntesis si indican números negativos
                If cadenaLimpia.StartsWith("(") AndAlso cadenaLimpia.EndsWith(")") Then
                    cadenaLimpia = "-" & cadenaLimpia.Trim(New Char() {"(", ")"})
                End If

                ' Mantiene solo números y decimal
                Return LimpiarCadenaNumerica(cadenaLimpia)
            End Function
        

La función LimpiarFormatoMonetario aparta los símbolos de moneda y separadores de miles primero, y luego maneja adecuadamente los paréntesis para representar cantidades negativas. Posteriormente, refina la cadena eliminando cualquier otro carácter que no sea un dígito numérico o el signo decimal, aprovechando la función LimpiarCadenaNumerica anteriormente descrita.

Solución Completa para Distintos Escenarios

En proyectos de software reales, es crucial contar con soluciones versátiles capaces de manejar distintos escenarios y casos de uso. Por lo tanto, es recomendable diseñar funciones de limpieza de cadenas numéricas que contemplen un amplio espectro de situaciones, desde los números enteros formateados hasta cifras complejas con formato monetario. La combinación de las estrategias y fragmentos de código discutidos en este artículo nos proporciona un conjunto de herramientas robustas para la manipulación y el tratamiento adecuado de cadenas numéricas en Visual Basic, asegurando la precisión y calidad de los datos manejados en nuestras aplicaciones.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad