08 agosto 2007

Operaciones con cadenas de texto (II)

Continuamos viendo funciones para manejo de cadenas de caracteres:

function AnsiIndexStr( const AText: string; const AValues: array of string ): Integer;

Esta función comprueba si alguna de las cadenas contenidas en el array AValues coincide extactamente con la cadena AText (distingue mayúsculas y minúsculas). Si la encuentra nos devuelve el número de índice del array donde se encuentra (empieza por cero), en caso contrario nos devuelve -1. Por ejemplo:

AnsiIndexStr( 'JUAN', ['CARLOS','PABLO','JUAN','ROSA'] ) devuelve 2
AnsiIndexStr( 'JUAN', ['CARLOS','PABLO','Juan','ROSA'] ) devuelve -1

Como vemos en el primer ejemplo nos dice que JUAN se encuentra en la posición 2 del array. Sin embargo en el sedungo ejemplo devuelve -1 porque JUAN es distinto de Juan.

function AnsiIndexText( const AText: string; const AValues: array of string ): Integer;

Funciona exactamente igual que la función AnsiIndexStr salvo que no distingue mayúsculas y minúsculas. Según el ejemplo anterior ambas llamadas a la función devuelven idéntico resultado:

AnsiIndexText( 'JUAN', ['CARLOS','PABLO','JUAN','ROSA'] ) devuelve 2
AnsiIndexText( 'JUAN', ['CARLOS','PABLO','Juan','ROSA'] ) devuelve 2

function AnsiLeftStr( const AText: AnsiString; const ACount: Integer ): AnsiString;

Esta función devuelve la parte izquierda de la cadena AText según el número de caracteres que le indiquemos en ACount. Sería algo así:

AnsiLeftStr( 'PROGRAMANDO CON DELPHI', 6 ) devuelve PROGRA
AnsiLeftStr( 'PROGRAMANDO CON DELPHI', 11 ) devuelve PROGRAMANDO
AnsiLeftStr( 'PROGRAMANDO CON DELPHI', 18 ) devuelve PROGRAMANDO CON DE

function AnsiLowerCase( const S: string ): string;

Devuelve la cadena S convertida toda en minúsculas (si tiene letras, naturalmente). Veamos un par de ejemplos:

AnsiLowerCase( 'Programando con Delphi' ) devuelve:

programando con delphi

AnsiLowerCase( 'MANIPULANDO CADA CARÁCTER DE LA CADENA' ) devuelve:

manipulando cada carácter de la cadena

Como vemos nos ha respetado la tílde en la palabra carácter.

function AnsiMatchStr( const AText: string; const AValues: array of string ): Boolean;

Esta función nos dice si alguna de las cadenas contenidas en el array AValues coincide exactamente con la cadena AText (comprobando mayúsculas y minúsculas). Aunque esta función pueda parecer igual a AnsiIndexStr se diferencia en que sólo responde True o False si la encontrado o no, al contrario que AnsiIndexStr que nos devuelve que la posición donde la ha encontrado. Con un ejemplo se ve mas claro:

AnsiMatchStr( 'JUAN', ['CARLOS','PABLO','JUAN','ROSA'] ) devuelve True
AnsiMatchStr( 'JUAN', ['CARLOS','PABLO','Juan','ROSA'] ) devuelve False

Nota: La ayuda de Delphi 7 dice que esta función devuelve un Integer y realmente devuelve un Boolean, será un error de documentación (ya estamos acostumbrados a la 'magnífica' documentación de Borland). En cambio si está corregido en la función:

function AnsiMatchText( const AText: string; const AValues: array of string ): Boolean;

Similar a la función anterior AnsiMatchStr pero sin diferenciar mayúsculas y minúsculas. Siguiendo el mismo ejemplo:

AnsiMatchText( 'JUAN', ['CARLOS','PABLO','JUAN','ROSA'] ) devuelve True
AnsiMatchText( 'JUAN', ['CARLOS','PABLO','Juan','ROSA'] ) devuelve True

function AnsiMidStr( const AText: AnsiString; const AStart, ACount: Integer ): AnsiString;

Devuelve un trozo de la cadena AText cuya posición comienza en AStart (el primer elemento es el 1) y cuyo número de caracteres viene determinado por ACount. Por ejemplo:

AnsiMidStr( 'PROGRAMANDO CON DELPHI', 7, 5 ) devuelve MANDO
AnsiMidStr( 'PROGRAMANDO CON DELPHI', 17, 6 ) devuelve DELPHI

function AnsiPos( const Substr, S: string ): Integer;

Devuelve la posición de la cadena Substr que está dentro de la cadena S. Si no la encuentra devuelve un cero (el primer elemento comienza por 1). También distingue entre mayúsculas y minúsculas. Veamos como funciona:

AnsiPos( 'PALABRA', 'BUSCANDO UNA PALABRA' ) devuelve 14
AnsiPos( 'Palabra', 'BUSCANDO UNA PALABRA' ) devuelve 0

function AnsiReplaceStr( const AText, AFromText, AToText: string ): string;

Esta función nos devuelve la cadena AText reemplazando las palabras que contenga según la variable AFromText sustituyéndolas por AToText. Tiene encuentra mayúsculas y minúsculas:

AnsiReplaceStr( 'CORRIGIENDO TEXTO DENTRO DE UNA FRASE', 'TEXTO', 'UNA PALABRA' ) devuelve:

CORRIGIENDO UNA PALABRA DENTRO DE UNA FRASE

AnsiReplaceStr( 'CORRIGIENDO TEXTO DENTRO DE UNA FRASE', 'Texto', 'UNA PALABRA' ) devuelve:

CORRIGIENDO TEXTO DENTRO DE UNA FRASE

Como vemos en el segundo ejemplo al no encontrar Texto por contener minúsculas ha dejado la frase como estaba.

function AnsiReplaceText( const AText, AFromText, AToText: string ): string;

Igual a la función AnsiReplaceStr sin distinguir mayúsculas y minúsculas:

AnsireplaceText( 'CORRIGIENDO TEXTO DENTRO DE UNA FRASE', 'TEXTO', 'UNA PALABRA' ) devuelve:

CORRIGIENDO UNA PALABRA DENTRO DE UNA FRASE

AnsireplaceText( 'CORRIGIENDO TEXTO DENTRO DE UNA FRASE', 'Texto', 'UNA PALABRA' ) devuelve:

CORRIGIENDO UNA PALABRA DENTRO DE UNA FRASE


El próximo artículo continuará con más funciones de manipulación de texto.

Pruebas realizadas en Delphi 7.

Publicidad