Extraer números de una cadena de texto usando VB.Net

By marjuanm | msproys | 23 Jan 2020


Números

Números | Cortesía de Pixabay

Que tal, saludos a todos:

  En esta ocasión quiero compartir con ustedes el código fuente de una rutina que implementé para extraer todos los números presentes en una cadena de texto usando Visual Basic.Net. El objetivo de esta rutina es extraer "todos" los números presentes en el texto, independientemente de su posición dentro del mismo, espero les sea de utilidad. Expongo a continuación el código fuente y luego una explicación general.

'#### Purpose: Extract number section from string
'#### Created date: 28/04/2015
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 11/03/2016
'#### Last modified username: Juan Manuel Mar Hdz.
Public Function getNumbersFromText(txt As String, Optional preserveseparators As Boolean = False) As String

Dim c As String, i As Long, found As Boolean, mystr As String = ""

If txt.IsNullOrEmpty(txt) = True Then
Return ""
Else

For i=0 To txt.Trim().Length - 1

Try
c = txt.Substring(i, 1)
Catch exp As Exception
c = ""
End Try

If c.IsNullOrEmpty(c) = False Then

If preserveseparators = False Then

If IsNumeric(c) = True Then

mystr = mystr.Trim + c.Trim
found = True

End If

Else

If IsNumeric(c) = True Or c.ToString().Trim = "." Or c.ToString().Trim = "," Then

mystr = mystr.Trim + c.Trim
found = True

End If

End If

End If

Next

If found = False Then
Return ""
Else
Return mystr.Trim
End If

End If

End Function

  Lo que haremos para ir extrayendo los números es mediante el ciclo "For" al inicio de la rutina, iremos recorriendo nuestra cadena posición por posición y el valor recuperado almacenándolo en la variable "c". Una vez validemos que ese carácter sea correcto nos asesoraremos con la variable "preserveseparators" para conservar o no los caracteres separadores dentro de un formato numérico, como lo son comas y puntos.

  Si esto es afirmativo entonces la cadena resultante "mystr" irá almacenando todos los números encontrados y adicional los caracteres separadores, de lo contrario solo almacenaremos los números.

If preserveseparators = False Then

'En esta sección si el caracter extraido es número se almacena en mystr, pero solo números.
If IsNumeric(c) = True Then

mystr = mystr.Trim + c.Trim
found = True

End If

Else

'En esta sección si el caracter extraido es número se almacena en mystr, se aceptan números, pero también caracteres separadores.
If IsNumeric(c) = True Or c.ToString().Trim = "." Or c.ToString().Trim = "," Then

mystr = mystr.Trim + c.Trim
found = True

End If

End If

  Como pueden la rutina es realmente muy sencilla, una vez hallamos recorrido toda la cadena de texto retornaremos la variable "mystr" y de esa manera habremos extraído todos los números presentes en nuestra cadena de texto.

Vamos a ver el código fuente en acción:

Llamando a la rutina (este código fuente ya lo tengo dentro de una clase, así que debo llamar a la función haciendo referencia a la clase).

Llamando a la función

La salida:

La salida

Los invito a seguir visitando este blog y gracias por sus visitas realizadas.

How do you rate this article?

0


marjuanm
marjuanm

I'm a VB.NET Programmer, but too programming on PHP, greetings.


msproys
msproys

Blog informático para dar a conocer mis proyectos, soy desarrollador de sistemas y partidario del software libre. Por medio de este blog estaré dando a conocer algunos de mis trabajos, así como publicando diversos códigos fuentes útiles.

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.