• Jueves 28 de Marzo de 2024, 18:52

Autor Tema:  Buscar Dentro De Strings  (Leído 4061 veces)

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Buscar Dentro De Strings
« en: Jueves 5 de Octubre de 2006, 17:53 »
0
Bueno, lo que pretendo hacer es un buscador de palabras dentro de un archivo....kiero ke extraiga linea a linea y dentro de esta linea buske alguna palabra...lo de las lineas lo se hacer...lo ke no se hacer es buscar dentro de una string....alguien me ayuda??

Un ejemplo seria esto:

Supongamos ke kiero buscar la palabra Punk aki dentro:

Eskorbuto, es y sera para siemrpe uno de los mejores grupos punk de la Historia

No se ke komando se usa para buskar dentro de strings....en VB es facilisimo...en Pascal no se.... :(  :(

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #1 en: Jueves 5 de Octubre de 2006, 17:58 »
0
fuente de la info
Citar
Función Pos

Esta función permite determinar si una cadena está contenida en otra. En este caso, la función devuelve la posición donde comienza la cadena buscada en la cadena fuente, si la cadena no existe, se devuelve el resultado 0.

Formato :
Pos (cadena buscada, cadena fuente)

Ejemplo:

cad:= 'uno dos tres cuatro cinco seis';
WriteLn(Pos('dos',cad));
{Resulta 5 que es la posición de 'd'}
WriteLn(Pos('ocho',cad));
{Resulta 0 no existe la cadena 'ocho'}
Espero que te sirva
Saludos
Eugenio

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #2 en: Jueves 5 de Octubre de 2006, 19:55 »
0
Muchas gracais....era lo ke buskaba....ahora ya me apañare yo.... :smartass:  :smartass:

Zank's :hola:

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #3 en: Jueves 5 de Octubre de 2006, 20:17 »
0
Una ultima pregunta.....supongamos ke kiero extraer el kontenido ke hay en medio de 2 caracteres....por ejemplo:

Jaime es "corto"...

Kiero extraer lo ke hay entre las komillas....ke instruccion se usaria???o se harai con un bukle hasta recorrer toda la string desde el primer " hasta el segundo " y alamcenar todo lo de enmedio en una variable???

A lot of Thank's....xD xD xD  :lol:  :lol:

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #4 en: Jueves 5 de Octubre de 2006, 22:22 »
0
Pascal no viene con tanta variedad de funciones de cadenas, pero con las que tiene puedes hacer lo que quieres y lo del bucle es buena idea. De todos modos es más que seguro que exista alguna biblioteca de funciones para cadenas que sería bueno tener a mano para estas cosas.

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #5 en: Jueves 5 de Octubre de 2006, 22:31 »
0
Exacto...si alguien konoce alguna "biblioteca" de como trabajar strings en Pascal se agradeceria y mucho..... :lol:  :lol:

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #6 en: Viernes 6 de Octubre de 2006, 14:17 »
0
otra vez, extraido de la misma fuente citada en el post de arriba.
Citar
Función Copy

Esta función devuelve una cadena de caracteres (subcadena) extraída de una cadena.

Formato:
Copy(s,posición,número)

s        cadena (fuente)
posición primer carácter a extraer (tipo entero)
número   total de caracteres a extraer (tipo entero)

Si posición es mayor que la longitud de S, se devuelve una cadena vacía; si número especifíca más caracteres que los indicados desde posición, sólo se devuelve el resto de la cadena.

Ejemplo:

cad  := 'Instituto Tecnológico de La Paz';
cad2 := Copy(cad,26,6);
Write(cad2);       

Lo que produce la cadena 'La Paz' contenida en cad2

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #7 en: Viernes 6 de Octubre de 2006, 15:53 »
0
Ok...muchas gracias.... :lol:  :lol:

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #8 en: Martes 10 de Octubre de 2006, 16:56 »
0
Bien, kon los comandos posteados pretendo hacer una funcion ke me sake el kontenido ke hay entre 2 caracteres....por ejemplo, tengo esto:

Eskorbuto (gran grupo Punk) ya no cantan mas debido a que sus cantantes murieros pro sobredosis

Kiero ke la funcion extraiga lo ke hay dentro de los parentesis....habia ensado en hacerlo kon un bucle, pero me da un error brutal por pantalla (sintacticamente no hay error). Alguien me peude ayudar a codear esa funcion???

Gracias.

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #9 en: Lunes 16 de Octubre de 2006, 15:27 »
0
Cita de: "Zirrosis"
Bien, kon los comandos posteados pretendo hacer una funcion ke me sake el kontenido ke hay entre 2 caracteres....por ejemplo, tengo esto:

Eskorbuto (gran grupo Punk) ya no cantan mas debido a que sus cantantes murieros pro sobredosis

Kiero ke la funcion extraiga lo ke hay dentro de los parentesis....habia ensado en hacerlo kon un bucle, pero me da un error brutal por pantalla (sintacticamente no hay error). Alguien me peude ayudar a codear esa funcion???

Gracias.


Nadie me puede ayudar???

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #10 en: Martes 17 de Octubre de 2006, 00:26 »
0
Código: Text
  1.  
  2. function Extract(OpenS, CloseS, Str: String): String;
  3. var
  4.   ExtractResult: String;
  5.   I: Integer;
  6.   doCopy: Boolean;
  7. begin
  8.  for i:= 1 to Length(Str) do
  9.  begin
  10.    //el caracter es el del final, devolvemos resutlado y salimso
  11.    if Str[i] = CloseS then
  12.    begin
  13.       doCopy := False;
  14.       Extract := ExtractResult;
  15.       Exit;
  16.    end;
  17.    //si ya comenso el segmento de copia....
  18.    if doCopy then
  19.    begin
  20.      ExtractResult := ExtractResult + Str[i];
  21.    end;
  22.    //si el caracter es el de comienzo, tonces hay que copiar
  23.    if Str[i] = OpenS then
  24.       doCopy := True
  25.    else
  26.  end;
  27. end;
  28.  
  29. var
  30.   S: String;
  31.  
  32. begin
  33.   Readln(S);
  34.   WriteLn(Extract('(', ')',S));
  35.   Readln;
  36. end.
  37.  
  38.  
No es de lo mas eficiente pero funciona

Zirrosis

  • Miembro activo
  • **
  • Mensajes: 97
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #11 en: Martes 17 de Octubre de 2006, 07:28 »
0
Muchas gracias Enko, da igual si no es eficiente...mientras funcione.... ;)  ;)

Si la as echo tu aun mas gracias entonces.... :D  :D

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Buscar Dentro De Strings
« Respuesta #12 en: Martes 17 de Octubre de 2006, 14:18 »
0
Cita de: "Zirrosis"
Muchas gracias Enko, da igual si no es eficiente...mientras funcione.... ;)  ;)

Si la as echo tu aun mas gracias entonces.... :D  :D
Lo hice en Delphi, pero aún así debería funcionar en TurboPascal ya que no use casi ninguna funcion salgo Length que esta en los dos Compiladores.