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: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 2820
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

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: 20415
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 2820
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

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: 346
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: 2820
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

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: 3107
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: 346
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