Scusa ma sono stato preso da mille altre cose.
Ho buttato giu qualcosa al volo.
In realtà l'algoritmo è piu complesso di quello che dici, lo riporto sotto per riferimento.
Quello che ho messo giu io qui dovrebbe funzionare, tenendo conto dell'algoritmo vero che trovi sotto, ho fatto solo la parte nome cognome visto che per il resto dici di non avere problemi.
Vista l'ora tarda spero di non aver scritto caxxate
ecco il codice
VBNET Programming
PublicClass frm_main
PrivateSub btn_calcola_Click(sender AsObject, e As EventArgs)Handles btn_calcola.Click
Dim elencoVocali AsString="aeiou"
Dim nome AsString= txt_nome.Text.Replace(" ", "")
Dim cognome AsString= txt_cognome.Text.Replace(" ", "")
Dim vocali AsString
Dim consonanti AsString
'CALCOLO PER COGNOME
ForEach letter As Char In cognome
If elencoVocali.IndexOf(letter) > -1Then
vocali += letter
Else
consonanti += letter
EndIf
Next
Dim cognomeCodice AsString=Mid((consonanti + vocali), 1, 3)
cognomeCodice = cognomeCodice.PadRight(3, "X")
vocali =""
consonanti =""
'CALCOLO PER NOME
ForEach letter As Char In nome
If elencoVocali.IndexOf(letter) > -1Then
vocali += letter
Else
consonanti += letter
EndIf
Next
'caso speciale, piu di 4 consonanti, rimuovo la seconda cosi prendo la 1 la 3 e 4
If consonanti.Length >=4Then
consonanti = consonanti.Remove(1, 1)
EndIf
Dim nomeCodice AsString=Mid((consonanti + vocali), 1, 3)
nomeCodice = nomeCodice.PadRight(3, "X")
txt_codice.Text= cognomeCodice
txt_codice.Text+= nomeCodice
EndSub
EndClass
Riferimento:
Citazione:Caratteri indicativi del cognome
I cognomi che risultano composti da più parti o comunque separati od interrotti, vengono considerati come se fossero scritti secondo un'unica ed ininterrotta successione di caratteri.
Per i soggetti coniugati di sesso femminile si prende in considerazione soltanto il cognome da nubile.
Se il cognome contiene tre o più consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima, la seconda e la terza consonante.
Se il cognome contiene due consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima e la seconda consonante e la prima vocale.
Se il cognome contiene una consonante e due vocali, si rilevano, nell'ordine, quella consonante e quindi la prima e la seconda vocale.
Se il cognome contiene una consonante e una vocale, si rilevano la consonante e la vocale, nell'ordine, e si assume come terzo carattere la lettera x (ics).
Se il cognome e' costituito da due sole vocali, esse si rilevano, nell'ordine, e si assume come terzo carattere la lettera x (ics).
Caratteri indicativi del nome
I nomi doppi, multipli o comunque composti, vengono considerati come scritti per esteso in ogni loro parte e secondo un'unica ed ininterrotta successione di caratteri.
Se il nome contiene quattro o più consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima, la terza e la quarta consonante.
Se il nome contiene tre consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima, la seconda e la terza consonante.
Se il nome contiene due consonanti, i tre caratteri da rilevare sono, nell'ordine, la prima e la seconda consonante e la prima vocale.
Se il nome contiene una consonante e due vocali, i tre caratteri da rilevare sono, nell'ordine, quella consonante e quindi la prima e la seconda vocale.
Se il nome contiene una consonante e una vocale, si rilevano la consonante e la vocale, nell'ordine, e si assume come terzo carattere la lettera x (ics).
Se il nome e' costituito da due sole vocali, esse si rilevano nell'ordine, e si assume come terzo carattere la lettera x (ics).