Page 1 of 1

Primera Letra Mayúscula Después Espacio Capital *Solucionado

PostPosted: Sat Apr 10, 2021 10:09 am
by leandro
Buenos días para todos

¿Existe una función en FW o xHarbour que coloque la primera letra en mayúscula después de un espacio?, me explico.
Code: Select all  Expand view

Local cNombre := "leandro alfonso arevalo suarez"
cNomFormato := lafuncion(cNombre)
?cNomFormato //Leandro Alfonso Arevalo Suarez
 

De antemano gracias

Re: Función Primera Letra Mayúscula Después Espacio

PostPosted: Sat Apr 10, 2021 10:38 am
by cnavarro
Creo recordar que eso se llama Capital Letter o algo así, e incluso es posible que exista la function harbour que lo hace, pero en cualquier caso prueba esto ( está sin probar )
Code: Select all  Expand view

#include "Fivewin.ch"

Function Main()
   Local cNomFormato
   Local cNombre := "leandro alfonso arevalo suarez"
   cNomFormato := LetterCapital( cNombre )
   ? cNomFormato //Leandro Alfonso Arevalo Suarez

Return nil

//

Function LetterCapital( cCad )

   local x
   local aWords  := hb_ATokens( cCad, " " )
   For x = 1 to Len( aWords )
      if Len( aWords[ x ] ) > 2    // palabras cortas ?
         aWords[ x ]  := Lower( aWords[ x ] )
         aWords[ x ]  := Upper( Left( aWords[ x ], 1 ) ) + Substr( aWords[ x ], 2 )
      endif
   Next x
   cCad    := ""
   AEVal( aWords, { | c | cCad += c + " " } )
   
Return AllTrim( cCad )

 

Re: Función Primera Letra Mayúscula Después Espacio

PostPosted: Sat Apr 10, 2021 1:56 pm
by karinha
Code: Select all  Expand view

// CAPITAL LETTER - \SAMPLES\MAISCMIN.PRG

#Include "FiveWin.ch"

FUNCTION Main()

   LOCAL cTxtFormato
   LOCAL f_cTexto := "leandro alfonso arevalo suarez"

   cTxtFormato := TXT_CAPITALIZE( f_cTexto )

   ? cTxtFormato // Leandro Alfonso Arevalo Suarez

RETURN NIL

FUNCTION TXT_CAPITALIZE( f_cTexto )

   LOCAL lc_cTextoReturn := "", lc_aTmpTokenTxt := {}
   LOCAL lc_cTmpPalavra  := "", lc_cTmpCap      := ""
   LOCAL lc_iFor := 0

   lc_aTmpTokenTxt := hb_ATokens( f_cTexto )

   FOR lc_iFor := 1 TO Len( lc_aTmpTokenTxt )

      lc_cTmpPalavra := lc_aTmpTokenTxt[ lc_iFor ]
      lc_cTmpCap     := Lower( lc_cTmpPalavra )

      IF Len( lc_cTmpPalavra ) > 2

         IF .NOT. ( lc_cTmpCap $ "das dos" )

            lc_cTmpCap := Upper( SubStr( lc_cTmpCap, 1, 1 ) ) + ;
                                 SubStr( lc_cTmpCap, 2 )

         ENDIF

      ENDIF

      lc_cTextoReturn += lc_cTmpCap + " "

   NEXT

   lc_cTextoReturn := RTrim( lc_cTextoReturn )

RETURN( lc_cTextoReturn )

// FIN
 


Saludos.

Re: Función Primera Letra Mayúscula Después Espacio

PostPosted: Sat Apr 10, 2021 2:11 pm
by MGA
/**********************************************************************************************************************/
function FormataTextoComPrimeiraLetraMaiusculo( cText )
/*
*/
Local nToken := 1
Local cToken := StrToken(cText, nToken, " ")
Local cResult := ""

DO WHILE !empty(cToken)
cResult += Upper(left(cToken,1))+Lower(Substr(cToken,2))+" "
nToken ++
cToken := StrToken(cText, nToken, " ")
ENDDO

Return Alltrim(cResult)

Re: Función Primera Letra Mayúscula Después Espacio

PostPosted: Sat Apr 10, 2021 3:07 pm
by leandro
Excelente muchas gracias a todos por la ayuda :D

Re: Primera Letra Mayúscula Después Espacio Capital *Solucionado

PostPosted: Sat Apr 10, 2021 4:56 pm
by Baxajaun
Buenas !

Como dice Cristobal quizás con la función TokenUpper() de Harbour sea suficiente.
https://harbour.github.io/doc/hbct.html#tokenupper

Saludos,