PDA

View Full Version : [VB.NET] Da maiuscolo a minuscolo


OrcaAssassina
06-08-2009, 22:07
Ho una funzione per trasformare un Nome Cognome da maiuscolo a minuscolo per lasciando la prima lettera in maiscolo

Peṛ ha un problema: se un nome ha l'apostrofo lui me lo elimina

Vi posto il codice, sapete aiutarmi?
Potete suggerirmi anche una nuova funzione

Ciao e grazie

Public Function GetNomeProprio(ByVal nome As String) As String
Dim spazioPrima As Boolean = True
Dim sb As New System.Text.StringBuilder(nome.Length)
For Each c As Char In nome
If Char.IsLetter(c) Then
If spazioPrima Then
c = Char.ToUpper(c)
Else
c = Char.ToLower(c)
End If
sb.Append(c)
spazioPrima = False
ElseIf Char.IsWhiteSpace(c) Then
If Not spazioPrima Then
sb.Append(" "c)
End If
spazioPrima = True
End If
Next
Return sb.ToString()
End Function

john_revelator
07-08-2009, 09:58
Prova a cercare su google

System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase

devi convertire prima la stringa tutta in minuscolo.

Il problema relativo agli apostrofi peṛ rimane sempre. Ad esempio la stringa

ILARIA D'AMICO

verrebbe convertita in

Ilaria D'amico.
Probabilmente occorre un'espressione regolare per gestire questo caso.

OrcaAssassina
07-08-2009, 10:57
Prova a cercare su google

System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase

devi convertire prima la stringa tutta in minuscolo.

Il problema relativo agli apostrofi peṛ rimane sempre. Ad esempio la stringa

ILARIA D'AMICO

verrebbe convertita in

Ilaria D'amico.
Probabilmente occorre un'espressione regolare per gestire questo caso.



Ma cosi va bene

A me scrive

Ilaria Damico

MarcoGG
07-08-2009, 13:39
Ho una funzione per trasformare un Nome Cognome da maiuscolo a minuscolo per lasciando la prima lettera in maiscolo

Peṛ ha un problema: se un nome ha l'apostrofo lui me lo elimina

Vi posto il codice, sapete aiutarmi?
Potete suggerirmi anche una nuova funzione

...



Io l'ho risolta coś :

Private Function FormattaCN(ByVal cn As String) As String

Dim sep() As Char = {" ", "'"}
For Each p As String In cn.Split(sep)
cn = cn.Replace(p, Strings.StrConv(p, Microsoft.VisualBasic.VbStrConv.ProperCase))
Next
Return cn

End Function

Funziona con qualsiasi cn in ingresso :
- ILARIA D'AMICO >> Ilaria D'Amico
- ilaria d'amico >> Ilaria D'Amico
;)

john_revelator
12-08-2009, 09:57
Un grande come sempre. Spettacolo. Ciao Marco. :)

MarcoGG
12-08-2009, 10:08
Un grande come sempre. Spettacolo. Ciao Marco. :)

Eh eh, ciao John. :)

Fa piacere vedere che almeno tu ( che non hai posto la domanda ) hai provato e riconosciuto la validità della soluzione proposta.
Se aspettiamo che il sig. OrcaAssassina torni a rispondere/ringraziare... Stiamo freschi ! :D :p