Ir al contenido


Foto

Obtener primra letra de cada palabra


  • Por favor identifícate para responder
14 respuestas en este tema

#1 jcheco

jcheco

    Member

  • Miembros
  • PipPip
  • 46 mensajes
  • LocationBronx, NY

Escrito 14 febrero 2012 - 06:17

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
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 14 febrero 2012 - 07:37

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 mensajes
  • LocationMedellín Colombia

Escrito 14 febrero 2012 - 07:54

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
  • 14.469 mensajes
  • LocationMéxico

Escrito 14 febrero 2012 - 09:30

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

Archivos adjuntos


  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 15 febrero 2012 - 08:56

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
  • 14.469 mensajes
  • LocationMéxico

Escrito 15 febrero 2012 - 09:23

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
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 15 febrero 2012 - 09:32

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
  • 14.469 mensajes
  • LocationMéxico

Escrito 15 febrero 2012 - 09:42


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
  • 4.266 mensajes
  • LocationCosta Rica

Escrito 15 febrero 2012 - 09:46

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
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 15 febrero 2012 - 09:49


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
  • 3.486 mensajes
  • LocationMexico City

Escrito 15 febrero 2012 - 10:31

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

Gracias por iluminar nuestro camino  :D

Saludox ! :)
  • 0

#12 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 15 febrero 2012 - 11:02

¡¡Exagerados !!.  :D :D

Saludos.
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.469 mensajes
  • LocationMéxico

Escrito 15 febrero 2012 - 11:12

¡¡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 mensajes
  • LocationBronx, NY

Escrito 15 febrero 2012 - 06:41

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
  • 2.040 mensajes
  • LocationSanto Domingo

Escrito 15 febrero 2012 - 07:37

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.