Clipper On Line • Ver Tópico - Converter a primeira letra para maiuscula de um nome

Converter a primeira letra para maiuscula de um nome

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

Moderador: Moderadores

 

Converter a primeira letra para maiuscula de um nome

Mensagempor asimoes » 07 Abr 2021 16:02

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)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Converter a primeira letra para maiuscula de um nome

Mensagempor alxsts » 07 Abr 2021 16:27

Olá!

Veja a função InitCap () neste tópico
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Converter a primeira letra para maiuscula de um nome

Mensagempor Itamar M. Lins Jr. » 07 Abr 2021 17:46

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


REQUEST HB_CODEPAGE_UTF8EX

function main
hb_cdpSelect("UTF8EX")

cString:= Lower("josÉ marIA dos saNtos")
alert(TokenUpper(cString))


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Converter a primeira letra para maiuscula de um nome

Mensagempor asimoes » 07 Abr 2021 18:03

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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Converter a primeira letra para maiuscula de um nome

Mensagempor Itamar M. Lins Jr. » 07 Abr 2021 19:50

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Converter a primeira letra para maiuscula de um nome

Mensagempor malcarli » 08 Abr 2021 08:14

Uso essa rotina que foi desenvolvida pelo Mestre Quintas.

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))
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 181
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 81 vezes
Mens.Curtidas: 4 vezes

Converter a primeira letra para maiuscula de um nome

Mensagempor JoséQuintas » 08 Abr 2021 11:20

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

E o FOR/EACH

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, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro