Funzioni stringa

Completato

È possibile usare alcune funzioni integrate per lavorare con le stringhe, come i tipi di dati di testo e codice. Ad esempio, si possono usare funzioni stringa per rimuovere caratteri da un valore di testo o per sostituire caratteri in quel testo. AL supporta una serie di funzioni stringa e inoltre le stesse funzioni disponibili come classe stringa .NET.

Non è necessaria l'interoperabilità .NET per usare queste funzioni, sono integrate nel linguaggio AL.

Screenshot del supporto per le funzioni stringa .NET.

Le funzioni stringa sono:

  • StrPos e IndexOf

  • CopyStr e Substring

  • SelectStr e Split

  • InsStr

  • StrLen e MaxStrLen

  • LowerCase, UpperCase, ToLower e ToUpper

  • IncStr

Funzioni StrPos e IndexOf

Con la funzione StrPos, è possibile trovare la posizione di una sottostringa all'interno di una stringa. Se viene trovata la sottostringa, la funzione StrPos restituisce la posizione intera. Pertanto, se il valore restituito è maggiore di zero, la sottostringa esiste.

Position := StrPos(Text, Substring);

L'esempio seguente usa la funzione StrPos per stabilire la prima posizione del carattere I nella variabile MyLongString.

var 
    MyLongString: Text[50];    
begin
    MyLongString := 'HelloWorldOfManyManyCharacters';

    Message('%1', StrPos(MyLongString, 'l'));  // Results in 3
end;

Un altro modo per ottenere la posizione di una sottostringa consiste nell'usare la funzione .IndexOf.

Position := Text.IndexOf(Substring,[StartPosition]);

Lo stesso esempio può essere riscritto con IndexOf.

var 
    MyLongString: Text[50];    
begin
    MyLongString := 'HelloWorldOfManyManyCharacters';

    Message('%1', MyLongString.IndexOf('l'));  // Results in 3
end;

Funzioni CopyStr e Substring

Con la funzione CopyStr, è possibile copiare una sottostringa da testo o codice. La funzione ha tre parametri, l'ultimo dei quali è facoltativo.

NewString := CopyStr(Text, StartIndex, [Length]);

Il codice nell'esempio seguente restituisce una sottostringa a partire dal quinto carattere. Restituisce 10 caratteri. Se non si specifica una lunghezza, restituisce tutti i caratteri fino alla fine del testo.

var
    MyLongString: Text[50];
    newString: Text[10];
begin
    MyLongString := 'HelloWorldOfManyManyCharacters';

    newString := CopyStr(MyLongString, 5, 10);

    Message('%1', newString);  // Results in 'oWorldOfMa'
end;

È inoltre possibile usare una versione .NET denominata Substring.

newString := MyLongString.Substring(5, 10);

Se si usa Substring, è necessario considerare una differenza importante. Se il parametro length è maggiore del numero disponibile di caratteri nella stringa, si riceve un errore con la funzione Substring. Con la funzione CopyStr, non si genera un errore ma viene restituita una stringa con i caratteri disponibili.

Funzioni SelectStr e Split

La funzione SelectStr restituisce una stringa da testo separato da virgole. Nell'esempio seguente, la funzione SelectStr ottiene la seconda stringa dal testo separato da virgole.

 var
    MyLongString: Text[50];
    newString: Text;
begin
    MyLongString := 'This,is a comma,separated,string';

    newString := SelectStr(2, MyLongString);

    Message('%1', newString);  // Results in 'is a comma'
end;

È inoltre possibile usare una funzione della versione .NET denominata Split. Anche se è simile a SelectStr, la funzione Split non agisce esattamente allo stesso modo. Supporta un parametro che consente di specificare in corrispondenza di quali caratteri effettuare una divisione. La funzione Split restituisce una funzione List of [Testo], dove è possibile specificare l'indice dell'elemento da recuperare.

var  
    MyLongString: Text[50];
    newString: Text;
begin
    MyLongString := 'This,is a comma,separated,string';

    newString := MyLongString.Split(',').Get(2);
    
    Message('%1', newString);  // Results in 'is a comma'
end;

La funzione Split può effettuare divisioni in corrispondenza di vari caratteri. Se si modifica l'esempio per eseguire una divisione anche su uno spazio vuoto, si ottiene il seguente risultato.

var
    MyLongString: Text[50];
    newString: Text;
begin
    MyLongString := 'This,is a comma,separated,string';

    newString := MyLongString.Split(',',' ').Get(2);
    
    Message('%1', newString);  // Results in 'is'
end;

Funzione InsStr

La funzione InsStr inserisce una stringa in una determinata posizione di una stringa esistente.

var
    MyLongString: Text[50];
    newString: Text;
begin
    MyLongString := 'Press ENTER to continue.';

    newString := InsStr(MyLongString, 'or ESC ', 13);

    Message('%1', newString);  // Results in 'Press ENTER or ESC to continue.'
end;

Funzioni StrLen e MaxStrLen

Le funzioni StrLen e MaxStrLen si usano per determinare rispettivamente la lunghezza e la lunghezza massima dei campi di testo. Se è presente una variabile di tipo Text[50], MaxStrLen sarà 50, anche se il contenuto include solo 10 caratteri. StrLen restituisce 10.

Queste funzioni vengono usate frequentemente in combinazione con la funzione CopyStr per ottenere il numero massimo di caratteri da una stringa.

var
    MyLongString: Text[50];
    newString: Text[10];
begin
    MyLongString := GetLongString();

    Message('STRLEN: %1', StrLen(MyLongString)); // Results in 30 
    Message('MAXSTRLEN: %1', MaxStrLen(MyLongString)); // Results in 50 

    newString := CopyStr(MyLongString, 5, MaxStrLen(newString));

    Message('%1', newString);  // Results in 'oWorldOfMa'
end;

Funzioni LowerCase, UpperCase, ToLower e ToUpper

Se si desidera cambiare l'uso di maiuscole/minuscole in una variabile di testo, si può ricorrere alle funzioni .NET LowerCase e UpperCase oppure ToLower e ToUpper.

var
    MyLongString: Text[50];
begin
    MyLongString := 'HelloWorldOfManyManyCharacters';

    Message('UPPERCASE: %1', UpperCase(MyLongString));  
    // Results in 'HELLOWORLDOFMANYMANYCHARACTERS'
    Message('LOWERCASE: %1', LowerCase(MyLongString));  
    // Results in 'helloworldofmanymanycharacters'     

    Message('UPPERCASE: %1', MyLongString.ToUpper());  
    // Results in 'HELLOWORLDOFMANYMANYCHARACTERS'
    Message('LOWERCASE: %1', MyLongString.ToLower());  
    // Results in 'helloworldofmanymanycharacters'    
end;

Funzione IncStr

La funzione IncStr viene usata per incrementare un numero all'interno di una stringa. Se il numero è negativo, viene diminuito di uno.

Se la stringa contiene più di un numero, l'unico numero che viene modificato è il numero più vicino alla fine della stringa.

var
    text000: Text;
    text001: Text;
begin
    text000 := 'Account no. 99 does not balance.';
    text001 := 'Account no. 2342 shows a total of $-452.';

    Message(IncStr(text000));
    // Results in: 'Account no. 100 does not balance.'

    Message(IncStr(text001));
    // Results in: 'Account no. 2342 shows a total of $-453.'
end;

Altre funzioni stringa .NET

AL supporta alcune funzioni stringa dalla classe stringa .NET:

  • Contains: controlla se una stringa contiene un carattere o una sottostringa.

  • EndsWith: controlla se una stringa termina con un valore specifico.

  • IndexOf: ottiene il primo indice di un carattere o di una stringa. Restituisce zero in assenza di risultati.

  • IndexOfAny: ottiene il primo indice di qualsiasi carattere. Restituisce zero in assenza di risultati.

  • LastIndexOf: ottiene l'ultimo indice di un carattere o di una stringa. Restituisce zero in assenza di risultati.

  • PadLeft: allinea a destra i caratteri nell'istanza con riempimento a sinistra per una lunghezza totale specificata. È possibile specificare quale carattere usare per la spaziatura.

  • PadRight: allinea a sinistra i caratteri nell'istanza con riempimento a destra per una lunghezza totale specificata. È possibile specificare quale carattere usare per la spaziatura.

  • Remove: rimuove una sottostringa da un testo.

  • Replace: sostituisce una sottostringa da un testo.

  • Split: divide il testo in corrispondenza di uno o più caratteri.

  • StartsWith: controlla se una stringa inizia con un valore specifico.

  • Substring: restituisce una parte della stringa, a partire da un indice specifico con una certa lunghezza.

  • ToLower: con questa funzione tutti i caratteri vengono convertiti in minuscolo.

  • ToUpper: con questa funzione tutti i caratteri vengono convertiti in maiuscolo.

  • Trim: rimuove tutti gli spazi vuoti iniziali e finali.

  • TrimEnd: rimuove tutte le occorrenze finali di un set di caratteri.

  • TrimStart: rimuove tutte le occorrenze iniziali di un set di caratteri.