Trocar maiusculo por minusculo

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

marsp
Usuário Nível 1
Usuário Nível 1
Mensagens: 46
Registrado em: 11 Fev 2013 14:09

Trocar maiusculo por minusculo

Mensagem por marsp »

Como Trocar RUA BARÃO DO ITAIM POR Rua Barão do Itaim. Trocar as primeiras letras maiúsculas por letras minúsculas.

Obrigado
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Trocar maiusculo por minusculo

Mensagem por JoséQuintas »

Tentar direto aqui, sem testar.
Seria ativar maiúscula ao encontrar espaço em branco, e desativar após passar pra maiúscula.
Então....

Código: Selecionar todos

UpperLower( @cTexto )

FUNCTION UpperLower( cTexto )

   LOCAL cTextoNovo, lUpper := .T., nCont, cLetra

   cTextoNovo := ""
   FOR nCont = 1 TO Len( cTexto )
      cLetra := Substr( cTexto, nCont, 1 )
      IF cLetra == " "
         lUpper := .T.
      ELSEIF lUpper 
         cLetra := Upper( cLetra )
         lUpper := .F.
      ENDIF
      cTextoNovo += cLetra
   NEXT
   RETURN cTextoNovo
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/
marsp
Usuário Nível 1
Usuário Nível 1
Mensagens: 46
Registrado em: 11 Fev 2013 14:09

Trocar maiusculo por minusculo

Mensagem por marsp »

Obrigado Jose Quintas.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Trocar maiusculo por minusculo

Mensagem por Jairo Maia »

Olá Pessoal,

Uso já há algum tempo essa função, que peguei aqui no fórum mesmo. Se não estou enganado foi disponibilizada pelo Toledo (acho). Mas funciona legal:

Código: Selecionar todos

Function Captular(texto)
LOCA i, excecao, fim, tamanho, novotexto, ini
excecao:={" Do "," Dos "," Da "," Das "," De "," Em "," A "," E "," O "}
novotexto=Space(1)+Lower(texto)
fim:=Len(texto)
FOR i=1 TO fim
 IF SubStr(novotexto,i,1)=" "
  novotexto=Stuff(novotexto,i+1,1,MAIUSC(SubStr(novotexto,i+1,1)))
 ENDI 
NEXT
tamanho=Len(excecao)
FOR i=1 TO tamanho
 IF excecao[i] $ novotexto
  novotexto=Stuff(novotexto,At(EXCECAO[i],novotexto),;
  Len(excecao[i]),Lower(excecao[i]))
 ENDI 
NEXT
novotexto=Stuff(novotexto,2,1,MAIUSC(SubStr(novotexto,2,1)))
RETU LTrim(novotexto)
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Trocar maiusculo por minusculo

Mensagem por JoséQuintas »

Precisa só de uma pequena melhoria.
O segundo FOR/NEXT só desfaz UMA ocorrência de exceções.
Talvez melhor assim, ou usando AEval()

Código: Selecionar todos

FOR nCont =1 TO Len( Exceção )
   NovoTexto := StrTran( NovoTexto, Exceção[ nCont ], Lower( Exceção[ nCont ] ) 
NEXT
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/
marsp
Usuário Nível 1
Usuário Nível 1
Mensagens: 46
Registrado em: 11 Fev 2013 14:09

Trocar maiusculo por minusculo

Mensagem por marsp »

Obrigado a você também Jairo
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Trocar maiusculo por minusculo

Mensagem por Jairo Maia »

Com razão José. Mais limpo e mais rápido. Valeu.

Para registro: Acima disse que havia baixado a função aqui no fórum mesmo. Mas na verdade essa função é disponibilizada pelo GASPRO, e a parte de exceções foi acrescentada por mim mesmo e segundo meu registro no .PRG em 02/2002.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Trocar maiusculo por minusculo

Mensagem por Softwhouse »

Jairo, olhei rápidamente e notei que falta a função MAIUSC, o que ela faz ? Pode disponibilizar ?
Fernando
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Trocar maiusculo por minusculo

Mensagem por Jairo Maia »

Verdade:

Código: Selecionar todos

Func Maiusc( Arg1 )
 Local t

 Arg1 := Upper( Arg1 )

 For t:=1 To 11
  Arg1 := StrTran( Arg1, SubStr( "çáàêâèéãõüí", t, 1 ), SubStr( "ÇÁÀÊÂÈÉÃÕÜI", t, 1 ) )
 Next
Return Arg1
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Trocar maiusculo por minusculo

Mensagem por alxsts »

Olá!

Consulte também o tópico Converter carcteres maiusculos por minusculos.
[]´s
Alexandre Santos (AlxSts)
Softwhouse
Usuário Nível 3
Usuário Nível 3
Mensagens: 324
Registrado em: 07 Dez 2011 18:44
Localização: Porto Alegre/RS

Trocar maiusculo por minusculo

Mensagem por Softwhouse »

Perfeito Jairo, implementei com a alteração sugerida pelo José Quintas (falta colocar um parênteses de fechamento no final) e funcionou corretamente. Obrigado.
Fernando
Responder