|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

51.- Funciones de cadenas. Módulos. Parte entera y decimal.

- En Visulal Basic hay una serie de funciones de cadenas que no existen realmente en B4A con los mismos nombres, en cambio sí que existen funciones con las que podemos obtener los mismos resultados.
Esta comparación de funciones las podemos ver en el foro oficial...

Conversion de VB a B4A

String

__________________________________
1.- Funciones de cadenas.

- Vamos a crear funciones de cadenas con los nombres que aparecen en Visual Basic, utilizando las instrucciones de B4A.

Estas funciones las podemos poner al final de nuestro código, de manera que cuando queramos utilizar alguna de ella solo tendremos que llamarla como lo hacíamos en Visual Basic.

    izquierda = Left("Hola amigo", 4)
    derecha = Right("Hola amigo", 5)
    central = Mid("Hola amigo", 2, 5)
    longitud = Len("Hola amigo")
    cambia = Replace("Hola amigo", "amigo", "chavo")
    mayusculas = Ucase("Hola amigo")
    minusculas = Lcase("Hola amigo")

 

Funciones de cadenas. Code Module f
f.bas
' Juan Antonio Villalpando
' juana1991@yahoo.com

Sub Left(Text As String, Length As Int)As String
   If length>text.Length Then length=text.Length
   Return text.SubString2(0, length)
End Sub

Sub Right(Text As String, Length As Int) As String
   If length>text.Length Then length=text.Length
   Return text.SubString(text.Length-length)
End Sub

Sub Mid(Text As String, Start As Int, Length As Int) As String
   Return text.SubString2(start-1,start+length-1)
End Sub

Sub Split(Text As String, Delimiter As String) As String()
   Return Regex.Split(Delimiter,text)
End Sub

Sub Len(Text As String) As Int
    Return Text.Length
End Sub

Sub Replace(Text As String, Str1 As String, Str2 As String) As String
    Return Text.Replace(Str1, Str2)
End Sub

Sub Lcase(Text As String) As String
    Return Text.ToLowerCase
End Sub

Sub Ucase(Text As String) As String
    Return Text.ToUpperCase
End Sub

Sub Instr(Text As String, Caracter As String) As String
    Return Text.IndexOf(Caracter)
End Sub

Sub Relleno (frase As String, longitud As Int ) As String
Dim
lleno As String
For n = 0 To longitud
lleno = lleno & " "
Next


' Espacios a derecha
frase = frase & lleno
frase = frase.substring2(0, longitud)

' Espacios a izquierda
'frase = lleno & frase
'frase = frase.SubString2(frase.Length - longitud, frase.Length)

Return
frase
End Sub

_____________________________
2.- En otro módulo

Sin embargo, en vez de poner todas estas funciones en el mismo Módulo Main del Activity que el código principal, se suele poner en un módulo aparte.

Para ello vamos a: Project / Add New Module / Code Module

Añadimos un nuevo Módulo de Código y le damos de nombre f

Pegamos en ese Módulo las funciones de String anterior, de esta manera dejamos libre el Módulo Main, que será donde pongamos el algoritmo del programa que realicemos.

Ahora para que, desde el Módulo Main, podamos llamar a esas funciones, debemos añadir al principio, el nombre del Módulo de Código, en nuestro caso f seguido de un punto.

Es decir, si estamos escribiendo código en el Main y necesitamos las funciones del Módulo de Código f, pondremos:

izquierda = f.Left("Hola amigo", 4)
derecha = f.Right("Hola amigo", 5)
central = f.Mid("Hola amigo", 2, 5)
longitud = f.Len("Hola amigo")
cambia = f.Replace("Hola amigo", "amigo", "chavo")
mayusculas = f.Ucase("Hola amigo")
minusculas = f.Lcase("Hola amigo")

- Este sería nuestro Módulo Main:

Funciones de cadenas. Módulo Main
' Juan Antonio Villalpando
' juana1991@yahoo.com
      
Sub Process_Globals

End Sub

Sub Globals
     Dim boton As Button
     Dim ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)

            ' Crea Botón
            boton.Initialize("boton")
            ListView1.Initialize("ListView1")
            Activity.AddView(boton, 5, 200, 160, 55) ' Posicion, ancho y alto
            boton.Text = "Pulsa"
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub boton_Click

    ToastMessageShow(f.Left("Hola amigo", 4), False)
    ToastMessageShow(f.Right("Hola amigo", 5), False)
    ToastMessageShow(f.Mid("Hola amigo", 2, 5), False)
    ToastMessageShow(f.Len("Hola amigo"), False)
    ToastMessageShow(f.Replace("Hola amigo", "amigo", "chavo"), False)
    ToastMessageShow(f.Ucase("Hola amigo"), False)
    ToastMessageShow(f.Lcase("Hola amigo"), False)
    
    Dim a As List 
    a = f.Split("Uno,Dos,Tres", ",")
    For i = 0 To a.Size - 1
        listview1.AddSingleLine(a.Get(i))
        Log(a.Get(i))
    Next


End Sub

 

- Fíjate que este archivo se encuentra en la carpeta del programa con el nombre f.bas; este archivo lo podemos copiar en otro proyecto de tengamos, de esta manera es fácil ampliar el número de instrucciones que podemos utilizar.
Esta es una de las misiones de estos módulos, que los podemos reutilizar en otros programas.

- Fíjate que el resultado del Split lo escribe en el Log. Podemos ver el Log pulsando en la pestaña inferior derecha del IDE.

_____________________________

3.- Rellenar

Sub Relleno (frase As String, longitud As Int ) As String
Dim
lleno As String
For n = 0 To longitud
lleno = lleno & " "
Next


' Espacios a derecha
frase = frase & lleno
frase = frase.substring2(0, longitud)

' Espacios a izquierda
' frase = lleno & frase
' frase = frase.SubString2(frase.Length - longitud, frase.Length)

Return
frase
End Sub

 

Rellena con un espacio " " o cualquier otro carácter hasta completar una cierta cantidad de caracteres.

Por ejemplo si ponemos "*" y luego hacemos

Relleno("hola", 6) nos saldrá hola**
Es decir, rellena la cadena hasta tener 6 caracteres.


_____________________________

4.- Parte entera y parte decimal de un número.

A veces queremos obtener la parte entera y/o la parte decimal de un número, en Visual Basic se utiliza la Instruccion Int, en cambio en Basic4Android debemos utilizar una función personalizada.
Para probar esta propuesta copia el siguiente código en el Activity_Create y ejecuta el proyecto.

Sub Activity_Create(FirstTime As Boolean)

Dim numero As Double
Dim partes() As String

numero = 12345.6789

partes = Regex.Split("\.", numero)

Msgbox("Parte entera = " & partes(0) & CRLF & "Parte decimal = " & partes(1), "")

End Sub

- También puedes probar con Floor, Ceil, Round,...

- Split lo que hace es separar los trozos que tienen un punto, y cada trozo lo pone en un partes.

_____________________________

5.- Número double a cadena String. Separación de cifras.

- Tenemos un número Double, lo pasamos a String. Separamos cada cifra.

- Introducimos: 12345.6789

- Obtenemos: - 1 - 2 - 3 - 4 - 5 - . - 6 - 7 - 8 - 9

Separación de cifras.
    Sub Activity_Create(FirstTime As Boolean)
	Dim numero As Double
	Dim cadena As String
	Dim cifra As String
	Dim separados As String

	numero = 12345.6789
	cadena = numero
	
	For n = 1 To cadena.Length
		cifra = cadena.SubString2(n-1,n)
		separados = separados & " - " & cifra    
	Next
	
	Msgbox(separados, "")

End Sub

			  

_____________________________

6.- ¿Que es una función?

Una función es un algoritmo, un trozo de código, al que podemos llamar y nos devolverá un valor calculado en su interior.

Vamos a crear una función llamada pitagoras,
a la cual haya que suministrarle dos valores, los catetos, (serán números que pueden tener decimales, Float)
y nos devolverá (Return) el resultado calculado en su interior también como variable de tipo Float.

 

Sub pitagoras(a As Float, b As Float) As Float
c = Sqrt(a * a + b * b)
Return c
End Sub

Este código lo pondremos en cualquier parte del código principal, normalmente se pone al final.
Cuando queramos hacer la función pitagoras, escribiremos...

Label1.Text = pitagoras(12, 34)

- Como he indicado en el apartado anterior, otro lugar donde se suelen poner las funciones es en un Módulo aparte, concretamente en el Módulo Code, en este caso cuando llamemos a pitagoras debemos poner el nombre del módulo, un punto y la función, por ejemplo...

Label1.Text = f.pitagoras(12, 34)

________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información