Skip to content

Latest commit

 

History

History
50 lines (37 loc) · 1.34 KB

conteggio_caratteri_diversi.md

File metadata and controls

50 lines (37 loc) · 1.34 KB

Conteggio caratteri diversi

Problema: come posso classificare in automatico i codici (tipo 133114 ecc.) per identificare il numero dei cambiamenti, cioè il numero di caratteri diversi? Per esempio, nella stringa 133114 ci sono "1" tre volte, "3" due volte, "4" una volta, dunque ci sono tre caratteri diversi. Nella stringa 222222 c'è un solo carattere ("2") ecc. Quesito preso dalla ML QGIS-user-it

Tabella di esempio:

ID field output
1 133114 3
2 222222 1
3 ABBACD 4

Una soluzione passa per l'uso degli array:

array_length(
array_distinct(  
string_to_array(
regexp_replace(regexp_replace( 133114,'(.)','\\1,'),',$','')))) → 3

nel caso in esame utilizzando il campo field

array_length(
array_distinct(  
string_to_array(
regexp_replace(regexp_replace( "field",'(.)','\\1,'),',$',''))))

oppure per evitare il doppio regex_replace (Grazie Andrea Giudiceandrea)

array_length(
array_distinct(  
string_to_array(
substr(regexp_replace( "field",'(.)',',\\1'),2))))

screen

oppure, ancora meglio senza usare la funzione substr

array_length(
array_distinct(  
string_to_array(
regexp_replace( "field",'(.)\\B',',\\1'))))