- 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)
________________________________