Página 1 de 1

Converter a primeira letra para maiuscula de um nome

Enviado: 07 Abr 2021 16:02
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

Converter a primeira letra para maiuscula de um nome

Enviado: 07 Abr 2021 16:27
por alxsts
Olá!

Veja a função InitCap () neste tópico

Converter a primeira letra para maiuscula de um nome

Enviado: 07 Abr 2021 17:46
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.

Converter a primeira letra para maiuscula de um nome

Enviado: 07 Abr 2021 18:03
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

Converter a primeira letra para maiuscula de um nome

Enviado: 07 Abr 2021 19:50
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.

Converter a primeira letra para maiuscula de um nome

Enviado: 08 Abr 2021 08:14
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))

Converter a primeira letra para maiuscula de um nome

Enviado: 08 Abr 2021 11:20
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.