Funciones en Visual Basic Manejo de cadena de caracteres 03/04/2012 UEGS Ing. Marco Buenaño A.
Funciones propias de Visual Basic 1 - Funciones para el tratamiento de cadenas Las funciones de cadena, como su nombre lo indica, se utilizan para trabajar y tratar las cadenas de caracteres. A continuación las mas importantes de ellas. 1.1 - Función Lcase y Ucase Estas dos funciones se utilizan para convertir cadenas de texto a minúscula y mayúscula. La función Lcase cambia o convierte una cadena de texto a minúscula y un ejemplo de como utilizarla sería así: Lcase (cadena que queremos convertir a minúsculas) Dim cadena As String cadena = "HOLA MUNDO" 'Convertimos cadena = LCase(cadena) 'La variable cadena ahora vale "hola mundo" La función Ucase funciona de la misma manera que Lcase pero convierte el contenido de una cadena a mayúsculas. Por ejemplo, si tenemos un control Label1 que contiene un texto que dice: "Porcentaje de sueldos", escribiendo la siguiente línea:
Label1 = UCase(Label1) El control Label1 pasaría a mostrar o mejor dicho contener en su propiedad caption:"porcentaje DE SUELDOS". 1.2 - Función Trim, LTrim y RTrim Estas tres funciones se utilizan para eliminar los espacios vacíos de una cadena. LTrim elimina los espacios vacíos de la parte izquierda de la cadena, RTrim de la parte derecha y Trim de ambas partes. Ejemplos: Tenemos una variable llamada ciudad con el valor " Barcelona". Para eliminar los espacios vacíos de la izquierda haríamos lo siguiente: ciudad = LTrim(ciudad) Si en un TextBox quisieramos borrar todos los espacios vacíos de la parte derecha de la cadena: MiText = RTrim(MiText) La Función Trim elimina todos los espacios vacíos de ambos lados de la cadena. Pais = " Argentina " País = Trim(Pais) Ahora el valor de País es igual a: "Argentina". 1.3 - Función Len La función Len nos permite conocer la cantidad de caracteres que tiene una determinada cadena. O sea que esta función nos devuelve un número.
Len (Aquí va la cadena que queremos averiguar su tamaño) Como la función Len devuelve un número debemos asignar ese número devuelto en una variable de tipo numérica. Dim TamanoCadena As Long Dim MiCadena As String MiCadena = "Me Llamo Eustaquio" TamanoCadena = Len(MiCadena) El valor de la variable TamanoCadena pasaría a valer 18. Hay que tener en cuenta que la función Len también toma en cuenta los espacios vacíos. 1.4 - Función Asc y Chr La función Asc nos permite obtener el código ASCII de un de terminado caracter. Ejempos: Si queremos obtener el código ASCII del caracter "a", que es el número 97 podríamos hacer lo siguiente: Dim num As Integer num = Asc("a") En definitiva la función Asc lleva un solo parámetro de tipo String del cual queremos obtener dicho número. La Función Chr actúa a la inversa de la función Asc, esto quiere decir, que a partir de un determinado número nos devolverá el caracter ASCII. Obviamente que en vez de pasarle a la función un parámetro String es decir la letra, debemos pasarle un número ASCII y nos devolverá el carácter asociado.
Dim letra As String letra = Chr(97) La variable pasa a valer en este caso el caracter "a" 1.5 - Función InsTr La función InStr se utiliza para buscar una cadena o parte de una cadena dentro de otra cadena. Si la función encuentra la cadena a buscar devuelve un número que representa la posición donde encontró la cadena, si no la encuentra devuelve un 0. Los parámetros que lleva esta función son: InStr (comienzo, Cadena donde buscar, La Cadena a buscar) Como esta función devuelve un número debemos almacenarla en una variable de tipo numérica para utilizarla. Dim posicion As Integer posicion = InStr("Estoy tomando mate", "mate") En este ejemplo la función encontró la cadena "mate" en la posición 15, o sea que la variable posición pasa a valer 15. Si observamos bien, la función en el primer parámetro, denominado comienzo, nos pide que le digamos desde que posición comenzar a buscar. En nuestro ejemplo, este parámetro lo obviamos, esto quiere decir que comenzará desde la posición 0 de la cadena a buscar. Pero podríamos especificar una posición en particular, por ejemplo desde la 5, 10 etc..., según lo que necesitemos hacer. Otro ejemplo de InsTr : Este ejemplo, muestra como buscar dentro de un control TextBox, el cual tiene dos opciones, un botón para buscar la primera frase, y otro que sigue buscando a partir de donde esté ubicda la selección. Para armar el ejemplo colocar un Textbox llamado Text_Buscar que es donde se ingresará la frase y otro TextBox llamado Text1 que tendrá el texto. Este ultimo con la propiedad Multiline en True.
También colocar dos CommandButton: Command1 y Command2 Colocar el siguiente código fuente en el formulario: Option Explicit Private m_pos As Integer Sub buscar_cadena(byval Posicion As Integer) Dim p As Integer, Frase As String Frase = txt_buscar p = InStr(Posicion, Text1, Frase) If p > 0 Then m_pos = p With Text1.SelStart = m_pos - 1.SelLength = Len(Frase).SetFocus End With Else MsgBox "No se encontró la frase", vbinformation Text1.SetFocus End If
Private Sub Command1_Click() 'Busca a pratir de la primera pocición Call buscar_cadena(1) Private Sub Command2_Click() 'Busca a partir del valor que tenga m_pos Call buscar_cadena(m_pos + 1) Private Sub Form_Load() Command1.Caption = "Buscar" Command2.Caption = "Buscar siguiente" Me.Caption = "Ejemplo de InStr " Nota: también hay una función similar a Instr llamada InstrRev, y lo que hace es devolver la posición de la primera concurrencia de una cadena dentro de otra cadena, pero comenzando por el extremo derecho de la misma En este enlace hay un ejemplo que usa la función instrrev Extraer de un path o ruta, solo la extensión del archivo Función Left, Right y Mid Estas funciones son utilizadas para extraer partes de una cadena. La función Left: tiene 2 parámetros: El primero es la cadena de la cual se extraerán caracteres, y el segundo un número desde el cual comenzar a extraer caracteres desde la parte izquierda. Dim Cadena As String Cadena = Left("Ya es la madrugada", 9) 'Cadena, que es un string, sería igual a: "Ya es la" Función Right:
Es igual que la función Left pero comienza a extraer caracteres desde el lado derecho de la cadena. La función Mid: Tiene la misma función que las anteriores pero posee tres parámetros. Su sintaxis es: Mid (cadena, inicio, longitud) El parámetro cadena es la cadena a extraer caracteres. El parámetro Inicio es donde comenzar y el parámetro longitud, es la cantidad de caracteres a extraer de la cadena de caracteres Ejemplos: Dim nombre As String nombre = Mid("River perdió la copa", 7, 6) 'La variable nombre sería igual a: "perdió" Este Otro ejemplo usa la función Mid para realizar un simple efecto tipo máquina de escribir. Colocar en un formulario un CommandButton y el siguiente código fuente en el form. Option Explicit Sub Pausa(Segundos As Double) Dim inicio As Double ' Devuelve la cantidad de segundos desde que inicio windows inicio = Timer Do While (Timer - inicio) < Segundos ' pausa DoEvents Loop Private Sub Command1_Click() Dim texto As String texto = "... Hola mundo --->>> " Call MostrarTexto(texto, 0.1, Me) Private Sub MostrarTexto(Frase As String, _ Segundos As Double, _ Destino As Object)
Dim LenFrase As Integer Dim i As Integer Dim Caracter As String Dim texto As String LenFrase = Len(Frase) Do While i <= LenFrase Destino.Cls DoEvents i = i + 1 ' Obtiene el siguiente caracter Caracter = Mid(Frase, i, 1) ' texto actual texto = texto & Caracter Destino.Print texto ' Imprimi e/ dibuja el texto ' pausa o delay Pausa Segundos DoEvents Loop Private Sub Form_Load() Me.FontSize = 12 Me.Font.Bold = True Me.ForeColor = vbred Command1.Caption = " Efecto de texto con mid " Private Sub Form_Unload(Cancel As Integer) End 1.6 - Función Str y Val La función Val convierte una cadena en un número yla función Str un número en una cadena. Ejemplos: cadena = "123456" cadena = Val(cadena) 'Ahora cadena vale 123456 cadena2 = 123456 cadena2 = Str(cadena2)
'Ahora cadena2 vale "123456" 2 - Funciones para el tratamiento de números Visual Basic posee muchas funciones para tratar números. A continuación las principales funciones. 2.1 - Función Round La función Round se utiliza para redondear un número decimal, devolviendo un número entero. Dim Mimumero As Long Minumero = Round(245.8) '(La función devuelve 246) Minumero = Round(245.3) '(La función devuelve 245) Minumero = Round(245.5) '(La función devuelve 245) Round posee un parámetro opcional por si queremos incluir los dígitos decimales. 2.2 - Rnd y Randomize - Números aleatorios Para generar números aleatorios, Visual Basic incluye 2 funciones: Rnd y Randomize. La función Rnd devuelve un número aleatorio, y esta posee un solo parámetro. Ejemplo : Rnd (número) Pero para poder generar dichos números aleatorios, debemos utilizar previamente la función Randomize con la siguiente fórmula:
Dim LimiteInferior As Integer Dim LimiteSuperior As Integer LimiteInferior = 20 LimiteSuperior = 40 MsgBox Int((LimiteInferior - LimiteSuperior + 1) * Rnd + LimiteInferior) En el ejemplo anterior, se generarán números aleatorios comprendidos entre el 20 y el 40 Funciones matemáticas Las principales funciones matemáticas provistas por Visual Basic son: Abs: Devuelve el valor absoluto de una expresión numérica. Atn: Devuelve el arco tangente de un número. Cos: Devuelve el coseno de un ángulo. Exp: Devuelve el número "e" elevado a una potencia. Log: Devuelve el logaritmo natural de un número. Sgn: Devuelve un valor indicando el signo de un número. Sin: Devuelve el seno de un ángulo. Sqr: Devuelve la raíz cuadrada de un número. Tan: Devuelve la tangente de un ángulo. Bibliografía: http://www.recursosvisualbasic.com.ar/htm/tutoriales/tutorial-basico5.htm