Converter a primeira letra para maiuscula de um nome

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Converter a primeira letra para maiuscula de um nome

Mensagem por asimoes »

Pessoal,

Existe alguma função postada aqui no fórum que transforme um nome onde a primeira silaba seja caixa alta?

Exemplo:

jose maria dos santos

Jose Maria dos Santos
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Converter a primeira letra para maiuscula de um nome

Mensagem por alxsts »

Olá!

Veja a função InitCap () neste tópico
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter a primeira letra para maiuscula de um nome

Mensagem por Itamar M. Lins Jr. »

Olá!

Código: Selecionar todos

itamar@itamar-desktop:~/fontes/exemplos$ hbmk2 captular.prg hbct.hbc

Código: Selecionar todos

REQUEST HB_CODEPAGE_UTF8EX

function main
hb_cdpSelect("UTF8EX")

cString:= Lower("josÉ marIA dos saNtos")
alert(TokenUpper(cString)) 
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Converter a primeira letra para maiuscula de um nome

Mensagem por asimoes »

IniCap fez certinho Jose Maria dos Santos

Usando TokenUpper tive que fazer lower na string e o resultado foi próximo Jose Maria Dos Santos, o Dos foi o problema
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter a primeira letra para maiuscula de um nome

Mensagem por Itamar M. Lins Jr. »

Olá!
Tem gente que usa "Dos" outros preferem "dos"
A que passei usa "Dos", prefiro assim.

initcap() tem:
07 If Valtype( cString ) == "C"
08 cString := Lower( AllTrim( cString ) )

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Converter a primeira letra para maiuscula de um nome

Mensagem por malcarli »

Uso essa rotina que foi desenvolvida pelo Mestre Quintas.

Código: Selecionar todos

Function fPrimeiramaiuscula(cString)
   Local cChar, cRet:= [], lStatus:= .T., aString:= {[ Do ], [ Dos ], [ Da ], [ Das ], [ De ], [ E ], [ Del ], [ Ii ], [ É ]}

   HB_SETCODEPAGE([PTISO])
 
   For EACH cChar In cString
      cRet+= Iif(lStatus, Upper(cChar), Lower(cChar))
      lStatus:= (cChar == [ ])
   Next

   For EACH cChar In aString
       If cChar $ cRet
          cRet:= Stuff(cRet, At(cChar, cRet), Len(cChar), Lower(cChar))
       Endif
   Next

   HB_SETCODEPAGE([PT850])
Return (Alltrim(cRet))
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Converter a primeira letra para maiuscula de um nome

Mensagem por JoséQuintas »

Nem lembro disso....
Eu mudaria o nome de aString pra aList, pra não confundir com cString.

E o FOR/EACH

Código: Selecionar todos

FOR EACH cChar IN @cString
   IF lToUpper
      cChar := Upper( cChar )
   ENDIF
   lToUpper := ( cChar == " " )
NEXT
Assim altera a própria string, alterando só as letras que precisar.
Precisa testar, já que é um uso diferente, e não faz parte do meu dia a dia.

Mas só trocar essa parte pelo TokenUpper do Itamar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder