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.