ID do artigo: 168799 - Última revisão: sexta-feira, 19 de janeiro de 2007 - Revisão: 4.5

Como analisar o nome da pessoa em várias variáveis

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Este artigo fornece um procedimento para analisar uma única variável que contém o nome de uma pessoa em partes até 6:
   Title                (Mr., Ms., etc.)
   First Name
   Middle Initial(s)
   Last Name
   Pedigree             (Jr., Sr., III, etc.)
   Degree(s)            (B.S., PhD, etc.)
				

Mais Informações

AVISO: QUALQUER USO DE CÓDIGO/MACRO FORNECIDA NESTE ARTIGO É DE SUA RESPONSABILIDADE. A Microsoft fornece esse código/macro "como estão" sem garantia de qualquer tipo, expressa ou implícita, inclusive mas não limitada às garantias implícitas de comercialização e/ou adequação a uma finalidade específica.

Observação: No exemplo de código a seguir, um sublinhado (_) no final de uma linha é usado como um caractere de continuação de linha. Para versões do BASIC que não oferecem suporte a caracteres de continuação de linha, remova o sublinhado do final da linha de mesclagem com a seguinte linha ao recriar esse código.

Campos são analisados e removidos do nome na seguinte ordem:
Título-(se a primeira palavra corresponde à lista de títulos padrão)
Grau-(alguma coisa depois da primeira vírgula)
Pedigree-(se a última palavra corresponde à lista de pedigrees padrão)
Sobrenome nome-(não deve conter espaços, mas pode ser hifenizada)
Nome-(não deve conter espaços)
Meio Initial(s)-(restante)

Exemplo passo a passo

  1. Insira o código a seguir:
          Function CutLastWord (ByVal S As String, Remainder As String) _
              As String
          ' CutLastWord: returns the last word in S.
          ' Remainder: returns the rest.
          '
          ' Words are separated by spaces
          '
          Dim  I As Integer, P As Integer
            S = Trim$(S)
            P = 1
            For I = Len(S) To 1 Step -1
              If Mid$(S, I, 1) = " " Then
                P = I + 1
                Exit For
              End If
            Next I
            If P = 1 Then
              CutLastWord = S
              Remainder = ""
            Else
              CutLastWord = Mid$(S, P)
              Remainder = Trim$(Left$(S, P - 1))
            End If
          End Function
    
          Function CutWord (ByVal S As String, Remainder As String) As String
          '
          ' CutWord: returns the first word in S.
          ' Remainder: returns the rest.
          '
          Dim P As Integer
            S = Trim$(S)
            P = InStr(S, " ")
            If P = 0 Then P = Len(S) + 1
            CutWord = Left$(S, P - 1)
            Remainder = Trim$(Mid$(S, P + 1))
          End Function
    
          Sub ParseName (ByVal S As String, Title As String, FName As String, _
                         MName As String, LName As String, _
                         Pedigree As String, Degree As String)
          Dim Word As String, P As Integer, Found As Integer
          Const Titles = "Mr.Mrs.Ms.Dr.Miss,Sir,Madam,Mayor,President"
          Const Pedigrees = "Jr.Sr.III,IV,VIII,IX,XIII"
            Title = ""
            FName = ""
            MName = ""
            LName = ""
            Pedigree = ""
            Degree = ""
          '
          ' Get Title
          '
            Word = CutWord(S, S)
            If InStr(Titles, Word) Then
              Title = Word
            Else
              S = Word & " " & S
            End If
          '
          ' Get Degree
          '
            P = InStr(S, ",")
            If P > 0 Then
              Degree = Trim$(Mid$(S, P + 1))
              S = Trim$(Left$(S, P - 1))
            End If
          '
          ' Get Pedigree
          '
            Word = CutLastWord(S, S)
            If InStr(Pedigrees, Word) Then
              Pedigree = Word
            Else
              S = S & " " & Word
            End If
          '
          ' Get the rest
          '
            LName = CutLastWord(S, S)   ' Last Name
            FName = CutWord(S, S)       ' First Name
            MName = Trim(S)             ' Initials/Middle Name(s)
          End Sub
    						
  2. Para testar, crie um formulário com sete caixas de texto (txtName txtTitle, txtFirstName, txtMI, txtLastName, txtPedigree, txtDegree) e um botão de comando. Adicione o seguinte código:
          Sub Command1_Click()
          Dim Title As String, FName As String, MI As String
          Dim LName As String, Pedigree As String, Degree As String
            ParseName txtName, Title, FName, MI, LName, Pedigree, Degree
            txtTitle = Title
            txtFirstName = FName
            txtMI = MI
            txtLastName = LName
            txtPedigree = Pedigree
            txtDegree = Degree
          End Sub
    						
  3. Exibir o formulário, digite um nome em txtName e clique no botão de comando. Os outros seis campos devem conter os valores analisados.

Informações adicionais

Outras anotações, limitações e sugestões para melhoria (à esquerda para dispositivos do leitor):

  1. A rotina de análise assume uma vírgula antes do nível, mas não antes do Pedigree. Se houver uma vírgula antes do Pedigree, ele será incluído como parte do degree(s). Se você quiser permitir Pedigree como sendo precedidos por uma vírgula, você pode adicionar uma verificação adicional para verificar que se a primeira palavra (separados por vírgula) do nível está na lista de Pedigrees padrão.
  2. O primeiro e último nomes é considerado contêm sem espaços. Se isso acontecer (por exemplo, Mary Beth são Paulo), parte do nome (por exemplo, são Beth) terminarão no valor de retorno do meio inicial/segundo nome. Infelizmente, devido à variabilidade alta da ocorrência, não há nenhuma solução alternativa boa diferente de intervenção manual.
  3. A rotina de análise foi projetada para nomes de inglês/americano. Outras linguagens podem ter diferentes convenções que podem exigir ajustes para o código de análise.
  4. A lista de títulos e Pedigrees padrão pode ser facilmente estendida adicionando entradas para as duas declarações Const em ParseName.
  5. A verificação de título pode ser feita mais genérica procurando por um ponto no final da primeira palavra se ainda não estiver na lista de títulos padrão.

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 4.0 Standard Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 Professional Edition
  • Microsoft Visual Basic 4.0 de 16 bits Enterprise Edition
  • Microsoft Visual Basic 4.0 de 32 Bits Enterprise Edition
  • Microsoft Visual Basic 2.0 Standard Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Visual Basic 2.0 Professional Edition
  • Microsoft Visual Basic 3.0 Professional Edition
  • Microsoft Access 1.0 Standard Edition
  • Microsoft Access 1.1 Standard Edition
  • Microsoft Access 2.0 Standard Edition
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
Palavras-chave: 
kbmt kbhowto kbprogramming KB168799 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 168799  (http://support.microsoft.com/kb/168799/en-us/ )