Jump to content


Photo

Obtener primra letra de cada palabra


  • Please log in to reply
14 replies to this topic

#1 jcheco

jcheco

    Member

  • Miembros
  • PipPip
  • 46 posts
  • LocationBronx, NY

Posted 14 February 2012 - 06:17 PM

Buenas Noches para tod@s.

Existe alguna función que me permita saber cual es la primera letra de cada palabra en un texto u oración?

Ej.

"Esto es solo una prueba" me arroje "Eesup"

Gracias anticipadas.
  • 0

#2 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2040 posts
  • LocationSanto Domingo

Posted 14 February 2012 - 07:37 PM

seria bueno que vieras lo que dice delphi al limite sobre manipulacion de cadenas de texto, hay 5 articulos este es el primero:
DELPHI AL LIMITE

Talvez tengas que utilizar la combinacion de dos o mas funciones de estas. Por ejemplo puedes dividir la oracion con esta:

function WrapText( const Line, BreakStr: string; nBreakChars: TSysCharSet; MaxCol: Integer ):string; overload;
function WrapText( const Line, MaxCol: Integer = 45 ):string; overload;

La función WrapText parte la cadena Line en múltiples líneas de texto separadas por defecto con los caracteres de control #13 y #10, en tamaños máximos de palabra definidos por MaxCol. Veamos algunos ejemplos:


WrapText( 'Partiendo una cadena de texto', 15 ) devuelve

  Partiendo una
  cadena de texto

WrapText( 'Partiendo una cadena de texto', 10 ) devuelve:

  Partiendo
  una
  cadena de
  texto

WrapText( 'Partiendo una cadena de texto', 5 ) devuelve:

  Partiendo
  una
  cadena
  de
  texto


Es decir, parte la cadena en frases cuyo tamaño máximo es definido por MaxCol pero respetando en ancho de cada palabra (aunque se pase del límite). También podemos definir con que caracteres vamos a separar las palabras así como que deseamos de separador. Si quisieramos separar la frase mediante por punto sería de la siguiente manera:


WrapText( 'Partiendo.una.cadena.de.texto', '-', ['.'], 5 ) devuelve

  Partiendo.-una.-cadena.-de.-texto


Hemos definido el separador (quitando #13 y #10) y también le hemos indicado el carácter que divide cada palabra (el punto).



pero revisa las funciones y mira si alguna te sirve


  • 0

#3 jdepaz

jdepaz

    Advanced Member

  • Miembros
  • PipPipPip
  • 264 posts
  • LocationMedellín Colombia

Posted 14 February 2012 - 07:54 PM

Hola,

También podrías implementar una función Split:

http://delphi.about....bltip1102_5.htm

y luego con otra función tomar el primer caracter de cada letra

Saludos
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14469 posts
  • LocationMéxico

Posted 14 February 2012 - 09:30 PM

Hola,

Y que tal usando un TStringList.



delphi
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   Lista: TStrings;
  4.   I: Integer;
  5.   Iniciales: string;
  6. begin
  7.   Lista := TStringList.Create;
  8.   Lista.Delimiter := ' ';
  9.   Lista.StrictDelimiter := true;
  10.   Lista.DelimitedText := Edit1.Text;
  11.   Iniciales := '';
  12.   for I := 0 to Lista.Count-1 do
  13.     Iniciales := Iniciales + Lista.Strings[I][1];
  14.   Label1.Caption := Iniciales;
  15.   Lista.Free;
  16. end;



Saludos

Attached Files


  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 15 February 2012 - 08:56 AM

Trabajando directamente con la cadena:




delphi
  1. function PrimaL(const S: string): String;
  2. var
  3.   i: integer;
  4. begin
  5.   if IsCharAlphaNumeric(S[1]) and (S[1] <> ' ') then Result:= Result + S[1]
  6.   else Result:= '';
  7.   for i:= 1 to Length(S) do
  8.     if (Not IsCharAlphaNumeric(S[i]) or (S[i] = ' ')) and (S[i+1]<>' ') then Result:= Result + S[i+1];
  9. end;




Saludos.
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14469 posts
  • LocationMéxico

Posted 15 February 2012 - 09:23 AM

Hola

No conocia esa función amigo escafandra (y)

Hay tantas funciones que no conozco que de solo pensar en estudiarlas ya me dio miedo :D :D :D

Salud OS
  • 0

#7 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 15 February 2012 - 09:32 AM

No conocia esa función amigo escafandra (y)


Supongo que te refieres a IsCharAlphaNumeric. Pertenece a las funciones de cadena de la API de Windows, no a delphi.  :)

PD: La uso para identificar nueva palabra en el hipotético caso de que exista un signo de puntuación sin espacio detrás.


Saludos.
  • 0

#8 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14469 posts
  • LocationMéxico

Posted 15 February 2012 - 09:42 AM


No conocia esa función amigo escafandra (y)


Supongo que te refieres a IsCharAlphaNumeric. Pertenece a las funciones de cadena de la API de Windows, no a delphi.  :)

PD: La uso para identificar nueva palabra en el hipotético caso de que exista un signo de puntuación sin espacio detrás.


Saludos.


Así es, lo imaginaba, cHackAll, seoane y tú son los masters del API de Windows :)

Salud OS

  • 0

#9 Caral

Caral

    Advanced Member

  • Moderador
  • PipPipPip
  • 4266 posts
  • LocationCosta Rica

Posted 15 February 2012 - 09:46 AM

Hola



No conocia esa función amigo escafandra (y)


Supongo que te refieres a IsCharAlphaNumeric. Pertenece a las funciones de cadena de la API de Windows, no a delphi.  :)

PD: La uso para identificar nueva palabra en el hipotético caso de que exista un signo de puntuación sin espacio detrás.


Saludos.


Así es, lo imaginaba, cHackAll, seoane y tú son los masters del API de Windows :)

Salud OS

+1  (y)
Saludos
  • 0

#10 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2092 posts
  • LocationRepública Dominicana

Posted 15 February 2012 - 09:49 AM


No conocia esa función amigo escafandra (y)


Supongo que te refieres a IsCharAlphaNumeric. Pertenece a las funciones de cadena de la API de Windows, no a delphi.  :)

PD: La uso para identificar nueva palabra en el hipotético caso de que exista un signo de puntuación sin espacio detrás.


Saludos.


Saludos.

Tal como dice Egostar ustedes son los fuertes en API para Windows.  No me imaginaba algo así, en una posible solución utilizaría los viejos Pos, Delete y Copy.

Cada día se aprende algo nuevo de los maestros.
  • 0

#11 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3486 posts
  • LocationMexico City

Posted 15 February 2012 - 10:31 AM

:shocked: :lipsrsealed: :tongue: :cheesy: :wink:

Gracias por iluminar nuestro camino  :D

Saludox ! :)
  • 0

#12 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 15 February 2012 - 11:02 AM

¡¡Exagerados !!.  :D :D

Saludos.
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14469 posts
  • LocationMéxico

Posted 15 February 2012 - 11:12 AM

¡¡Exagerados !!.  :D :D

Saludos.


Bueno, no es exageracion, cada quien tiene su area de experiencia, ustedes (espero no omitir a nadie) son API's y así podemos nombrar a cada uno porque eso se nota.

Por ejemplo, yo soy excelente para las artes culinarias, como me gusta la comida :D :D :D

Saludos
  • 0

#14 jcheco

jcheco

    Member

  • Miembros
  • PipPip
  • 46 posts
  • LocationBronx, NY

Posted 15 February 2012 - 06:41 PM

Gracias a Tod@s por sus sugerencias, lamentablemente no he podido probar ninguna, tan pronto pueda hacerlo les cuento como me va.

Estoy teniendo un problema de conexion.
  • 0

#15 luk2009

luk2009

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2040 posts
  • LocationSanto Domingo

Posted 15 February 2012 - 07:37 PM

Ese cerebro de Escafandra no tiene comparacion. Como simplifica los problemas. Gracias por todos tus aportes

Imagen Enviada
  • 0




IP.Board spam blocked by CleanTalk.