Linguaggio 4D – Miglioramenti al confronto delle stringhe

Tradotto automaticamente da Deepl

Il linguaggio 4D offre oltre 20 comandi per gestire le stringhe. Con 4D v18 R6, 4D introduce un nuovo comando: Compare strings. E un altro comando è stato migliorato: Position. Entrambi i comandi consentono di utilizzare le opzioni per ottenere risultati più precisi. Impariamo di più!

HDI: miglioramenti nel confronto tra stringhe.

Posizione

Il noto comando Position permette di trovare la posizione di un testo all’interno di un altro testo. Fornisce solo due opzioni: posizione iniziale e corrispondenza esatta, basata sul codice dei caratteri. A partire da 4D v18 R6, sono disponibili altre possibilità di confronto, come “case sensitive” o “accent sensitive”. Anche la lingua giapponese non è stata dimenticata! Hiragana/Katakana e larghezza dei caratteri sono disponibili come opzioni di ricerca. C’è anche la possibilità di cercare la “parola intera”.

Cominciamo dall’inizio.

La prima opzione è “rigorosa”. Tiene conto della capitalizzazione, degli accenti, ecc. e delle specificità delle lingue. In tedesco, ad esempio, si può ritenere che “ß” sia identico a “ss”. In francese, œ e æ sono equivalenti a “oe” e “ae”.

Le altre opzioni disponibili parlano da sole. Le opzioni “insensibile alle maiuscole e minuscole” e “insensibile agli accenti” consentono di ignorare gli accenti e le lettere maiuscole. Per il giapponese, “kana insensitive” ignora le differenze tra katakana e hiragana, mentre “width insensitive” ignora la larghezza dei caratteri.

L’ultima opzione (molto utile) consente di ignorare le parti delle parole per trovare solo parole complete (intere).

Alcuni esempi

$p:=Position ("casa"; "ho fatto i compiti";0;$length;sk whole word")
// returns zero ! home is not a whole word in this case.

$p:=Position ("casa"; "ho fatto i compiti";0;$length;sk case insensitive")
// returns 16; the capital "H" is considered equal to letter "h"

$p:=Position ("Joao"; "Ho un amico di nome Joao";0;$length;sk accent insensitive")
// returns 23; the accentuated letter "ã" is considered equal to letter "a"

Queste opzioni possono essere cumulate!

$p:=Position ("joao"; "Ho un amico di nome João";0;$length;sk case insensitive + sk accent insensitive")
// also returns 23; the accentuated letter "ã" is considered equal to letter "a" AND letter "J" is considered equal to letter "j"

Confronto di stringhe

Il nuovo comando Compare strings permette di confrontare le stringhe con le stesse opzioni aggiunte al comando Position. Questo comando si basa sulla lingua definita nelle impostazioni del database. Può essere molto utile per consentire, ad esempio, ordinamenti specifici.

Il comando restituisce:

  • zero (0) se le stringhe sono considerate identiche (in base ai criteri passati come opzioni)
  • un valore negativo o positivo se la prima stringa viene ordinata prima o dopo la seconda.

Alcuni esempi

Nell’esempio seguente, $risultato restituisce “1” perché “a” è considerato più grande di “A”. Non per le sue dimensioni, ma per il suo codice di caratteri!
Promemoria: sk char code rende il confronto indipendente dalla lingua.

$result:=Compare strings("alfa"; "Alpha"; sk char codes)

Questa volta, $risultato restituisce “0” perché le minuscole e le maiuscole devono essere considerate identiche, grazie all’opzione sk case insensitive.
Promemoria: sk case insensitive rende il confronto dipendente dalla lingua.

$result:=Compare strings("un albero"; "Un albero"; sk case insensitive)

Conclusione

Date un’occhiata all’HDI di cui sopra e vedete come si possono usare queste nuove opzioni.

Se avete bisogno di gestire ricerche o ordinamenti specifici nei vostri dati, vi saranno sicuramente molto utili. Maggiori informazioni su questi comandi sono disponibili nella documentazione: confronta stringhe e posizione.

E assicuratevi di partecipare alla discussione sul forum 4D!

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.