Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [VB.NET] Formattare Nome Cognome

    Un pò di tempo fa ho trovato una funzione in rete che mi permette di formattare un Nominativo

    Se un Nominativo era scritto tipo:

    PIPPO FRANCO

    Con questa funzione lui scriveva:

    Pippo Franco

    Adesso ho riscontrato un problema se uno scrive il nome lasciando per sbaglio 2 spazi invece di uno

    PIPPO FRANCO
    PIPPO FRANCO

    la funzione va in errore, scrivendo:
    "Indice oltre i limiti della matrice."


    Riporto la funzione, come posso modificarla???

    Ciao e grazie

    -----------------------------------------

    'Metto tutto in minuscolo e rimuovo gli spazi all'inizio e alla fine
    nome = LCase(nome).Trim()
    'Creo un array dove separo il nome dal cognome
    Dim temp() As String = nome.Split(" ")
    Dim result As String = ""
    For Each s As String In temp
    'Inserisco come secondo carattere la lettera in maiuscolo
    s = s.Insert(1, UCase(s(0)))
    'Rimuovo il primo carattere (quello in minuscolo)
    s = s.Remove(0, 1)
    'Aggiungo la stringa al risultato
    result += s + " "
    Next
    'Ritorno il risultato senza spazi all'inizio e alla fine
    Return result.Trim()

    -----------------------------------------
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  2. #2
    codice:
    Public Function FormattaNominativo(ByVal Nominativo As String) As String
        Dim spazioPrima As Boolean = True
        Dim sb As New System.Text.StringBuilder(Nominativo.Length)
        For Each c As Char In Nominativo
            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)
                If Not spazioPrima Then
                    sb.Append(" "c)
                End If
                spazioPrima = True
            End If
        Next
        Return sb.ToString()
    End Function
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3

    ok

    Originariamente inviato da MItaly
    codice:
    Public Function FormattaNominativo(ByVal Nominativo As String) As String
        Dim spazioPrima As Boolean = True
        Dim sb As New System.Text.StringBuilder(Nominativo.Length)
        For Each c As Char In Nominativo
            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)
                If Not spazioPrima Then
                    sb.Append(" "c)
                End If
                spazioPrima = True
            End If
        Next
        Return sb.ToString()
    End Function
    ok funziona!!!!!!
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.