É muito comum em um sistema que utiliza cadastros com banco de dados com nomes próprios desformatados; alguns nomes todos em caixa alta e outros todos em caixa baixa. Isso ocorre pois cada pessoa tem o seu jeito de digitar, apesar de incorreto.
O que ocorre, na verdade, é que ao emitir um relatório, por exemplo, os nomes ficam com a formatação errada e atrapalha até leitura e também a compreensão dos nomes.
Depois de ver diversos nomes mal formatados em sites e sistemas, decidi criar uma função de formatação de nomes próprios.
Dessa forma ‘JOÃO DA SILVA’ ou ‘joão da silva’ será formatado como João da Silva.
Observe que existe uma exceção, as preposições. Elas diferentemente dos nomes, não podem ter a primeira letra em maiúsculo.
Veja outros exemplos de formatação:
– JOSÉ FRANCISCO DOS SANTOS ficará José Francisco dos Santos
– joão de oliveira carvalho e silva ficará João de Oliveira Carvalho e Silva
Para utilizar a função basta passar o nome (desformatado) como parâmetro que ela retornará formatada. Simples assim. Diga adeus aos nomes desformatados.
<% '----------------------------------------------------- 'Função: FormataNome(ByVal Nome) 'Sinopse: Formata nome próprio para que as primeiras ' letras fiquem maiúsculo (com exceções) 'Parametro: ' Nome = Nome próprio a ser formatado 'Autor: Gabriel Fróes (www.codigofonte.com.br) 'Data: 20/10/2008 '----------------------------------------------------- Function FormataNome(ByVal Nome) 'Declarações Dim arrNome Dim Retorno Dim Cont Dim objER Dim Excecoes 'Inicializando e configurando o objeto (expressão regular) Set objER = New RegExp objER.IgnoreCase= True objER.Global = True Excecoes = "^(da|das|de|do|dos|e)$" objER.Pattern = Excecoes 'Por padrão o nome todo ficará minúsculo Nome = Lcase(Replace(Nome, " ", " ")) 'Gerando um array com todas as palavras individualmente arrNome = Split(Nome, " ") Retorno = "" For Cont = 0 To Ubound(arrNome) arrNome(Cont) = Trim(arrNome(Cont)) 'Colocando a primeira letra de cada palavra maiúscula (salvo exceções) If Not objER.Test(arrNome(Cont)) Then If Not arrNome(Cont) = "" Then arrNome(Cont) = Ucase(Left(arrNome(Cont), 1)) & Right(arrNome(Cont), Len(arrNome(Cont))-1) End If End If Retorno = Retorno & " " & arrNome(Cont) Next 'Destruindo o objeto (expressão regular) Set objER = Nothing 'Retorno da função FormataNome = Trim(Retorno) End Function 'Teste de utilização da função Response.Write FormataNome ("JOSÉ FRANCISCO DOS SANTOS") & "
" Response.Write FormataNome ("joão de oliveira chavier e silva") & "
" %>