Mundo Web
manuales - recursos - graficos - programación...

Home - ASP -  Curso práctico - Capítulo 4  - 1 - 2 -  3 - 4

Curso práctico de ASP (IV)
por Luciano Moreno, del departamento de diseño web de BJS Software.


Manejo de cadenas.-

Como ya vimos en capítulos anteriores, aunque VBScript considera todos los datos que maneja como de tipo Variant, asigna a las cadenas el subtipo String. Por ello, es normal referirse a toda cadena de caracteres con el nombre de string.

La forma más simple de tratar cadenas es usando el operador de concatenación para unir dos o más cadenas en una sola:

<%
  Dim cadena1, cadena2, cadena3, resultado
  cadena1=”Hola”
  cadena2=” “
  cadena3=”Mundo”
  Resultado=cadena1 & cadena2 & cadena3
%>
<%=resultado%>

Con lo que obtendremos en pantalla Hola Mundo. Notad que cadena 2 contiene dentro un espacio.

Esto podemos usarlo por ejemplo para unir el nombre y el apellido introducido por el usuario en un formulario. Si nuestro formulario es:

<form name="form1" action="b.asp" method="post">
<input type="text" name="campo1">&nbsp;<input type="text" name="campo2"><br><br>
<input type="submit" value="enviar">
</form>

La página ASP de recogida de datos sería:

<%
  Dim cadena1, cadena2, cadena3, resultado
  cadena1=Request.Form("campo1")
  cadena2=Request.Form("campo2")
  resultado=cadena1 & " " & cadena2
%>
<%=resultado%>

Con lo que si el usuario introduce Pedro en el campo 1 y Cerro en el campo2, el resultado obtenido será Pedro Cerro, como podéis apreciar en la siguiente imagen:

Operador AND

Aparte de este operador básico, VBScript pone a nuestra disposición un buen número de funciones propias para el manejo de cadenas, entre las que cabe destacar las siguientes:

InStr( [inicio,] cadena1, cadena2 [,comparar] )

Recibe como argumentos obligatorios dos expresiones de cadena, cadena1 y cadena2, retornando la posición de la primera aparición de cadena2 dentro de cadena1.

Posee dos argumentos opcionales, inicio, que establece a partir de qué carácter dentro de cadena1 se empieza a buscar cadena2 (si se omite se empieza la comparación desde el primer carácter), y comparar, valor numérico que indica el tipo de comparación que se utilizará cuando se evalúen subcadenas, y que puede valer 0, con lo que se realizará una comparación binaria (valor por defecto), y 1, con el que se realiza una comparación textual.

Si se establece el argumento comparar es necesario establecer también inicio.

Ejemplo:

<%
    Dim cadena1, cadena2, resultado
    cadena1 = "Manbru se fue a la guerra"
    cadena2 = "ru"
    resultado = InStr(1, cadena1, cadena2, 1)
%>

Con lo que la variable resultado pasa a valer 5. Notad cómo hemos especificado a la función que empiece a buscar desde el primer carácter en cadena 1 y que la comparación la haga textual, que es la que nos suele interesar normalmente.

InStrRev( cadena1, cadena2 [inicio, comparar] )

En todo análoga a la anterior, salvo en la disposición de los argumentos y en que comienza la búsqueda por el final de cadena1.

Join( lista [, delimitador] )

Precisa como argumento obligado lista, que es una matriz que contiene como elementos una serie de cadenas de texto, y retorna dichos elementos combinados en una sola cadena (string).

Posee un argumento opcional, delimitador, que especifica el carácter de cadena usado para separar los elementos de la matriz en la cadena de retorno. Si no se especifica este argumento, las subcadenas vendrán separadas por un espacio vacío, " ". Si usamos como valor de delimitador una cadena de longitud cero, "", las subcadenas de la matriz estarán unidas sin delimitador en la cadena de retorno.

Ejemplo:

<%
    Dim cadena
    Dim lista(2)
    lista(0) = "Hola"
    lista(1) = "Mundo"
    cadena = Join(lista)
%>

<%=cadena%>

Que nos presenta en pantalla Hola Mundo.

Como veis, obtenemos resultados parecidos a los que conseguíamos con el operador de concatenación &, pero la función Joint va más allá, es más flexible.

Imaginemos un formulario con tres campos, en los que el usuario debe introducir un día, un mes y un año. A la hora de recoger los valores para pasarlos internamente como valor de una variable de tipo date, necesitaremos unir dichos valores en una expresión que pueda asimilarse a una fecha. Estos lo podemos conseguir con la función Joint, usando como delimitadores el carácter “/” o el carácter “-“. Si los campos del formulario se llaman dia, mes y anio, el código necesario sería:

<%
    Dim lista(3) , dia, fecha
    lista(0)=Request.Form("dia")
    lista(1)=Cstr(Request.Form("mes"))
    lista(2)=Cstr(Request.Form("anio"))
    fecha = Join(lista, "/")
%>
<%=fecha%>

Cuyo resultado podéis apreciar en la siguinete imagen:

Función Join

LCase( cadena )

Recibe como argumento una cadena o expresión de cadena válida, retornando dicha cadena pasada a minúsculas. Si la cadena contiene Null, se devuelve Null. Los caracteres que no son letras permanecen sin cambio.

Ejemplo:

<%
        Dim cadena0, cadena1
        cadena1=”HoLa MuNdO”
        cadena2=LCase(cadena1)
%>
<%=cadena2%>

Con lo que obtendremos la cadena hola mundo.

Left( cadena, longitud )

Recibe como argumento una cadena o expresión de cadena válida, retornando dicha cadena pasada a minúsculas. Si la cadena Función de cadenas. Recibe como argumentos una cadena o expresión de cadena válida y un número entero, longitud, retornando una subcadena de la que recibe como argumento, desde el inicio de la misma (por la izquierda) hasta el número de caracteres fijado por el argumento longitud.

Si cadena contiene Null, retorna Null. Si longitud es 0, se devuelve una cadena de longitud cero, "". Si longitud es mayor que el número de caracteres que forman la cadena recibida, retorna ésta en su totalidad. OJO: Los espacios en blanco se consideran un carácter más.

Para controlar el número de caracteres de la cadena podemos usar la función Len.

Ejemplo:

<%
   Dim cadena, subcadena
   cadena="En un lugar de La Mancha"
   subcadena=Left(cadena, 4)
%>
<%=subcadena%>

Y por lo tanto, tendremos en pantalla la cadena En u

Esta función posee una variante, la función LeftB, que se utiliza con datos de tipo byte contenidos en una cadena. En lugar de especificar el número de caracteres que se van a devolver, longitud especifica el número de bytes.

Len( cadena )

Función de cadenas. Recibe como argumento una cadena o expresión de cadena válida, retornando el número de caracteres que la forman. Los espacios en blanco se cuentan como caracteres.

Como ejemplo, imaginemos que tenemos un formulario con una caja de texto, en la que el usuario introduce una determinada cadena. El código necesario para recoger dicha cadena, obtener el número de caracteres que la forman y sacar una ventana de alerta es:

Página a.html:

<form name="form1" action="b.asp" method="post">
  <input type="text" name="texto" size="10"><br><br>
  <input type="submit" value="enviar">
</form>

Página b.asp:

<%
   Dim cadena, longitud
   cadena=Request.Form("texto")
   longitud=Len(cadena)
%>
<script language="JavaScript">
  alert("La cadena es de "+<%=longitud%>+" caracteres");
</script>

Y el resultado lo tenéis en esta ventana.

Por cierto, en este ejemplo podéis apreciar cómo trabajan perfectamente en equipo ASP, VBScript y JavaScript, presentando la gran ventaja de que las variables ASP se sustituyen por sus correspondientes valores, por lo que el usuario fina sólo recibe HTML y JavaScript puros.

Se puede usar también la función Len con otro fin, ya que si recibe como argumento una variable, retornará el número de bytes necesario para almacenar dicha variable.

En ambos casos, si el argumento contiene Null, se retorna Null.

Destacar también que existe una variante de Len, la función LenB, que se utiliza con datos de tipo byte contenidos en una cadena. En lugar de devolver el número de caracteres de una cadena, LenB devuelve el número de bytes utilizados para representar dicha cadena.

LTrim( cadena )

Función que recibe como argumento una cadena, variable que la contenga o expresión de cadena válida, retornando la cadena sin los espacios en blanco que hay a la izquierda de la misma. Si la cadena contiene Null se retorna Null.

Ejemplo:

<%
  Dim cadena, resultado
  cadena=”     Hola Mundo”
  resultado=LTrim(cadena)
%>
<%=resultado%>

Con lo que resutado nos presentará en pantalla la cadena “Hola Mundo”, sin espacios al principio.

Esta función puede trabaja conjuntamente con RTrim y Trim, que veremos luego, y son muy útiles para recibir valores limpios, a pesar de los errores de espaciados que pueda cometer el usuario al introducir datos en un formulario. Una aplicación práctica a considerar es el caso de campos de formulario de tipo file, en los que el usuario debe introducir una ruta válida para el fichero a subir al servidor, ruta que no puede contener espacios vacíos.

Mid( cadena, inicio [, longitud] )

Recibe como argumento principal una cadena, retornando una subcadena de la misma. Maneja los siguientes argumentos:

- cadena: Obligatorio. Es una cadena, variable que la contenga o expresión de cadena válida, de la cual vamos a extraer la subcadena. Si contiene Null, la función retorna Null.

- inicio: Obligatorio. Es un número, variable que lo contenga o expresión numérica válida, que fija la posición del carácter de la cadena madre a partir del que vamos a extraer la subcadena. Si es mayor que el número de caracteres de la cadena madre, la función retorna una cadena de longitud cero, "".

- longitud: Opcional. Es un número, variable que lo contenga o expresión numérica válida, que fija la longitud en caracteres de la subcadena que queremos sacar de la cadena madre. Si se omite o si existen menos caracteres del número especificado por longitud en el texto (incluido el carácter en inicio), se devuelven todos los caracteres desde la posición de inicio hasta el final de la cadena.

Como ejemplo, vamos a suponer un formulario con una caja de texto, en la que el usuario debe introducir una cadena cualquiera (en este caso introduce Federico, y que deseamos obtener la subcadena de ella que comienza en el carácter 3 y tiene de longitud 4 caracteres. El código necesario en nuestra página ASP será del tipo:

<%
   Dim cadena, subcadena
   cadena=Request.Form("texto")
   subcadena=Mid(cadena, 3, 4)   
%>
<%=subcadena%>

Cuyo resultado será presentarnos en pantalla la subcadena deri, como podéis apreciar en esta ventana.

Replace (cadena_madre, cadena_buscada, cadena_cambio, comienzo, veces, comparacion)

Función de cadenas. Su funcionalidad es buscar una subcadena dentro de una cadena madre y reemplazarla por otra. Sus argumentos son o pueden ser:

- cadena_madre: Obligatorio. Cadena, variable que la contenga o expresión de cadena válida, que va a ser la cadena madre en la que vamos a buscar coincidencias.

- cadena_buscada: Obligatorio. Cadena, variable que la contenga o expresión de cadena válida, que va a ser la subcadena que vamos a buscar dentro de la cadena madre.

- cadena_cambio: Obligatorio. Cadena, variable que la contenga o expresión de cadena válida, que va a ser la subcadena que vamos a cambiar por cadena2 dentro de la cadena madre.

- comienzo: Opcional. Posición dentro de cadena_madre desde donde se va a comenzar a buscar cadena_buscada. Si se omite, se supone 1. Se debe utilizar junto con veces.

- veces: Opcional. Número de sustituciones de subcadena que se va a realizar. Si se omite, el valor predeterminado es -1, que significa hacer todas las sustituciones posibles. Se debe utilizar junto con comienzo.

- comparacion: Opcional. Valor numérico que indica el tipo de comparación que se va a utilizar cuando se evalúen subcadenas. Si es 0 (valor por defecto) se realiza una comparación de tipo binario, mientras que si es 1 se realiza una comparación textual.

Dependiendo de los resultados de la búsqueda, la función Replace puede devolver los siguientes valores:

si... devuelve
cadena es de longitud cero cadena de longitud cero ("")
cadena es Null un error
cadena_buscada es de longitud cero copia de cadena
cadena_cambio es de longitud cero copia de cadena con todas las apariciones de cadena_buscada eliminadas
comienzo >longitud de cadena cadena de longitud cero
veces = 0 copia de cadena

Ejemplo:

<%
   Dim busca
   busca=Replace("pitopitogorgorito", "ito", "ato")  
%>
<script language="JavaScript">
 alert("La cadena resultante es: <%=busca%>");
</script>

Que nos saca en pantalla una ventana de alerta con el texto patopatogorgorato, como podéis apreciar en la imagen siguiente:

Función Replace

RTrim( cadena )

Recibe como argumento una cadena, variable que la contenga o expresión de cadena válida, devolviendo la cadena sin los espacios en blanco que hubiera a la derecha de la misma. Si cadena contiene Null se retorna Null.

Esta función pertenece al mismo grupo que LTrim y Trim.

Ejemplo:

<%
    Dim cadena,  resultado
    cadena = "Hola Mundo        "
    resultado = Trim(cadena)
%>

que nos devuelve resultado = "Hola Mundo".

Space( numero )

Función de cadenas. Recibe como argumento un número, variable que lo contenga o expresión numérica válida, retornando una cadena formada por tantos espacios en blanco como unidades fije ese número.

En el siguiente ejemplo, vamos a introducir entre las palabras "Hola" y "Mundo" 5 espacios en blanco:

<%
   Dim cadena1, cadena2, espacios, resultado
   cadena1="Hola"
   cadena2="Mundo"
   espacios=Space(5)
   resultado = cadena1 & espacios & cadena2 
%>
<script language="JavaScript">
 alert("La cadena resultante es: <%=resultado%>");
</script>

Cuyo resultado es una ventana de alerta con el texto Hola     Mundo, como vemos en esta ventana.

Split( cadena [,delimitador, numero, comparar] )

Función de cadenas. Su misión es retornar una matriz unidimensional con base cero que contiene un número de subcadenas especificado. Es decir, dada una cadena formada por subcadenas que se encuentran acotadas mediante delimitadores, la función Split forma una matriz cuyos elementos son las diferentes subcadenas entre delimitadores. Los argumentos que posée son:

- cadena: Obligatorio. Es una cadena, variable que la contenga o expresión de cadena válida, formada por subcadenas y delimitadores de las mismas. Si es una cadena de longitud cero, retorna una matriz vacía, es decir, una matriz sin elementos ni datos.

- delimitador: Opcional. Carácter de cadena utilizado para identificar límites de subcadenas. Si se omite, se toma por defecto el carácter de espacio (" ") como delimitador. Si delimitador es una cadena de longitud cero (""), se devuelve una matriz de elemento único que contiene cadena completa, sin cambios.

- numero: Opcional. Número de subcadenas que se va a devolver; -1 indica que se devuelven todas las subcadenas.

- comparar: Opcional. Valor numérico que indica el tipo de comparación que se va a utilizar cuando se evalúen subcadenas. Sus valores posibles son 0, que realiza la comparación en forma binaria (valor por defecto) y 1, que la realiza en forma textual.

En el siguiente ejemplo partimos de la cadena "Bienvenidos+a+WebMaster", y vamos a obtener las subcadenas, acotadas por los caracteres “+”, que la forman, mostrando en pantalla cada una de ellas. También, vamos a juntar todas ellas en un único mensaje, separando las subcadenas con espacios:

<%
  Dim cadena, matriz, mensaje1, mensaje2, mensaje3, resultado
  cadena = "Bienvenidos+a+WebMaster"
  matriz = Split(cadena, "+", -1, 1)
  mensaje1="Primera subcadena. matriz(0)= " & matriz(0)
  mensaje2="Primera subcadena. matriz(1)= " & matriz(1)
  mensaje3="Primera subcadena. matriz(2)= " & matriz(2)
  resultado = matriz(0) & " " & matriz(1) & " " & matriz(2)
%>
Las subcadenas que forman el mensaje son:<br><br>
<%=mensaje1%><br>
<%=mensaje2%><br>
<%=mensaje3%><br><br>
Y el mensaje bien formateado es:&nbsp;<b><%=resultado%></b>

Cuyo resultado en pantalla es:

Las subcadenas que forman el mensaje son:

Primera subcadena. matriz(0)= Bienvenidos
Primera subcadena. matriz(0)= a
Primera subcadena. matriz(0)= WebMaster

Y el mensaje bien formateado es: Bienvenidos a WebMaster

Como vemos en esta ventana.

StrComp( cadena1, cadena2 [,comparar] )

Función de cadenas. Recibe como argumentos obligatorios dos cadenas, cadena1 y cadena2, separadas por comas, variables que las contengan o expresiones de cadena válidas, las compara y retorna un número, indicativo del resultado de dicha comparación. Así, si ambas cadenas son iguales devuelve un 0, si la primera es mayor que la segunda devuelve un 1, y si la segunda es mayor que la primera devuelve un -1. Si alguna cadena tiene un valor Null, devuelve Null.

La comparación entre cadenas se realiza en función de los caracteres que la forman. En este sentido debemos recordar que un carácter es mayor o menor que otro en función de sus códigos ASCII. Así,  la a es mayor que la A, porque el código ASCII de la A es 65 y el de la a es 97.

El argumento comparar es opcional, y es un valor numérico que indica el tipo de comparación que se va a utilizar cuando se evalúen cadenas. Si vale 0 la comparación de hará en forma binaria y si vale 1 se hará en forma textual. Si se omite, se realiza una comparación binaria.

Ejemplo:

<%
    Dim cadena1,  cadena2,  comparacion
    cadena1 = "Hola Mundo"
    cadena2 = "Bienvenidos a WebMaster"
    comparacion = StrComp(cadena1,  cadena2)
%>

que da como resultado comparacion = 1, ya que el caracter H es mayor que el B.

String( numero, caracter )

Función de cadenas. Recibe como argumentos un número, una variable que lo contenga o una expresión numérica válida, y un carácter, código de carácter, variable o expresión de cadena que los contenga, retornando una cadena compuesta por el carácter especificado, repetido las veces que indica el número.

Si numero contiene Null se retorna Null.

Si caracter contiene Null se retorna Null. Si contiene una cadena, se toma como carácter válido el primero de la misma.

Si contiene un código de carácter mayor que 255, lo convierte en un código de carácter válido mediante la fórmula:

caracter = caracter Mod 256

(Es decir, le resta 256 y toma el resultado como nuevo valor).

Ejemplo:

<%
  Dim resultado
  resultado=String(6, "a")
%>
<%=resultado%>

Que nos muestra en pantalla la cadena aaaaaa

StrReverse( cadena )

Función de cadenas. Recibe como argumento una cadena, variable que la contenga o expresión de cadena válida, devolviendo dicha cadena pero con sus caracteres invertidos, es decir, el primero pasa a ser el último, el segundo el penúltimo, etc.

Si cadena contiene una cadena de longitud cero ("") se devuelve otra cadena de longitud cero, y si contiene Null se produce un error en tiempo de ejecución

Como ejemplo, supongamos un formulario con una caja de texto para que el usuario introduzca una cadena cualquiera:

<form name="form1" action="reverse.asp" method="post">
 Cadena:&nbsp;<input type="text" name="texto" size="15">&nbsp;<input type="submit" value="enviar">
</form>

Para recoger la cadena en la página asp destino, invertir sus caracteres y mostrar el resultado en pantalla, el código necesario en reverse.asp será:

<%
  Dim cadena, inversa
  cadena=Request.Form("texto")
  inversa=StrReverse(cadena)
%>
La cadena inversa de la que has introducido es:&nbsp;<b><%=inversa%></b>

Cuyo resultado es:

La cadena inversa de la que has introducido es: ociredeF, como vemos en esta ventana.

Trim( cadena )

Función de cadenas. Recibe como argumento una cadena, variable que la contenga o expresión de cadena válida, retornando dicha cadena pero sin espacios en blanco en su inicio ni en su fin. Es decir, elimina los espacios en blanco que haya al principio y al final de la cadena. Si cadena contiene Null se retorna Null.

Esta función pertenece al grupo de LTrim y RTrim, siendo su efecto el de estas dos funciones juntas.

UCase( cadena )

Función de cadenas. Recibe como argumento una cadena, variable que la contenga o expresión de cadena válida, retornando dicha cadena con todos sus caracteres en mayúsculas. Sólo las letras minúsculas se convierten en mayúsculas; todas la letras mayúsculas y caracteres no letras permanecen inalteradas. Si cadena contiene Null, retorna Null.

Ejemplo:

<%
  Dim resultado
  resultado=Ucase(“Hola Mundo”)
%>
<%=resultado%>

Que nos muestra en pantalla la cadena HOLA MUNDO

 

anterior
siguiente

Home - ASP -  Curso práctico - Capítulo 4  - 1 - 2 -  3 - 4