09 agosto 2007

Operaciones con cadenas de texto (III)

Seguimos con funciones para manejo de cadenas de caracteres:

function AnsiReverseString( const AText: AnsiString ): AnsiString;

Esta función devuelve la cadena AText con los caracteres invertidos (de derecha a izquierda). Por ejemplo:

AnsiReverseString( 'Al revés' ) devuelve:

séver lA

AnsiReverseString( 'INVIRTIENDO UNA CADENA DE TEXTO' ) devuelve:

OTXET ED ANEDAC ANU ODNEITRIVNI

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

Esta función devuelve la parte derecha de la cadena AText según el número de caracteres que le indiquemos en ACount. Por ejemplo:

AnsiRightStr( 'PROGRAMANDO CON DELPHI', 6 ) devuelve DELPHI
AnsiRightStr( 'PROGRAMANDO CON DELPHI', 11 ) devuelve CON DELPHI
AnsiRightStr( 'PROGRAMANDO CON DELPHI', 18 ) devuelve RAMANDO CON DELPHI

function AnsiStartsStr( const ASubText, AText: string ): Boolean;

Devuelve True si la cadena ASubText está al comienzo de la cadena AText (distingue mayúsculas y minúsculas). Veamos como funciona:

AnsiStartsStr( 'C:\', 'C:\Mis documentos\' ) devuelve True
AnsiStartsStr( 'c:\', 'C:\Mis documentos\' ) devuelve False

function AnsiStartsText( const ASubText, AText: string ): Boolean;

Esta función es igual a AnsiStartsStr salvo que no distingue mayúsculas de minúsculas. En el caso anterior:

AnsiStartsText( 'C:\', 'C:\Mis documentos\' ) devuelve True
AnsiStartsText( 'c:\', 'C:\Mis documentos\' ) devuelve True

function AnsiUpperCase( const S: string ): string;

Devuelve la cadena S convertida toda en mayúsculas. Veamos un par de ejemplos:

AnsiUpperCase( 'Programando con Delphi' ) devuelve:

PROGRAMANDO CON DELPHI

AnsiUpperCase( 'manipulando cada carácter de la cadena' ) devuelve:

MANIPULANDO CADA CARÁCTER DE LA CADENA

procedure AppendStr( var Dest: string; const S: string ); deprecated;

Este procedimiento esta obsoleto. Añade a la cadena Dest el contenido dela cadena S. Utilizar en su lugar el operador + o la función Contat.

function CompareStr( const S1, S2: string ): Integer;

Compara las cadenas de texto S1 y S2 y devuelve cero si son iguales. Si son distintas devuelve un número positivo o negativo según la diferencia de caracteres. La operación de diferencia de caracteres se realiza a nivel de cada carácter utilizando su valor equivalente en ASCII. Por ejemplo:

CompareStr( 'HOLA', 'HOLA' ) devuelve 0
CompareStr( 'HOLA', 'HOLa' ) devuelve -32
CompareStr( 'HOLa', 'HOLA' ) devuelve 32
CompareStr( 'HOLA', 'HOYA' ) devuelve -13

Esta función esta obsoleta. Se recomienda utilizar AnsiCompareStr en su lugar.

function CompareText( const S1, S2: string ): Integer;

Similar a la función CompareStr pero sin tener en cuenta mayúsculas y minúsculas. Según el ejemplo anterior:

CompareText( 'HOLA', 'HOLA' ) devuelve 0
CompareText( 'HOLA', 'HOLa' ) devuelve 0
CompareText( 'HOLa', 'HOLA' ) devuelve 0
CompareText( 'HOLA', 'HOYA' ) devuelve -13

Esta función esta obsoleta. Se recomienda utilizar AnsiCompareText en su lugar.

function Concat( s1 [, s2,..., sn]: string ): string;

Esta función devuelve concatenadas un número indeterminado de cadenas de texto que le pasemos como parámetro, aunque se recomienda utilizar el operador + en su lugar. Veamos un ejemplo:

Concat( '12', '34', '56', '78' ) devuelve 12345678
Concat( 'COMO', ' ESTÁN', ' USTEDES' ) devuelve COMO ESTÁN USTEDES

function Copy( S; Index, Count: Integer ): string;
function Copy( S; Index, Count: Integer ): array;


Ambas funciones devuelven una subcadena de la cadena S en la posición Index (el primer elemento es 1) y con una longitud de Count. Por ejemplo:

Copy( '123456', 1, 3 ) devuelve 123
Copy( '123456', 4, 2 ) devuelve 45
Copy( 'CAPTURANDO UNA PALABRA', 16, 7 ) devuelve PALABRA

También puede utilizarse para copiar elementos entre arrays de cualquier tipo. Por ejemplo vamos a crear un array de enteros y vamos a copiar una parte del mismo a otro:

var Origen, Destino: array of Integer;
i: Integer;
begin
SetLength( Origen, 6 );
Origen[0] := 10;
Origen[1] := 20;
Origen[2] := 30;
Origen[3] := 40;
Origen[4] := 50;
Origen[5] := 60;
Destino := Copy( Origen, 2, 4 );
for i := 0 to Length( Destino ) - 1 do
Memo.Lines.Add( Format( 'Destino[%d]=%d', [i,Destino[i]] ) );
end;

El resultado lo hemos volcado a pantalla dentro de un campo Memo mostrando lo siguiente:

Destino[0]=30
Destino[1]=40
Destino[2]=50
Destino[3]=60

En el próximo artículo seguiremos con más funciones.

Pruebas realizadas en Delphi 7.

Publicidad