Página 1 de 1

pesquisar mais de uma sub-string

Enviado: 30 Mar 2012 18:37
por carlos_dornelas
Caros,

Como faço para pesquisar mais de uma sub-string dentro de uma string maior, por exemplo:

-pesquisar os termos "faço", "maior" e "dentro" de uma só vez e localizar o registro abaixo:

"Como faço para pesquisar mais de uma sub-string dentro de uma string maior"

Estou sem idéia aqui. Se alguém puder ajudar, fico muito grato.

Antonio Carlos
Curitiba

pesquisar mais de uma sub-string

Enviado: 31 Mar 2012 06:40
por Jairo Maia
Olá Carlos,

Veja se ajuda:

Código: Selecionar todos

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

Function Main()

 Local cVar, cVar1, cVar2, cVar3, cMsg
 HB_SETCODEPAGE('PT850')
 HB_LANGSELECT('PT')

 Clear Screen

 // Se pretende usar Case Sensitive, remova a função Uppe()
 cVar := Uppe( "Como faço para pesquisar mais de uma sub-string dentro de uma string maior?" )
 cVar1 := Uppe( "faço" )
 cVar2 := Uppe( "dentro" )
 cVar3 := Uppe( "maior" )

 If ( cVar1 $ cVar ) .And. ( cVar2 $ cVar ) .And. ( cVar3 $ CvAR )
  cMsg := "A variável: " + cVar + ";;"
  cMsg += "Contém as palavras: FAÇO, DENTRO e MAIOR"
  Alert( cMsg )
 Endi

Return Nil
Para usar com Banco de dados, a idéia seria a seguinte:

Código: Selecionar todos

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

Function Main()
 Local cVar, cVar1, cVar2, cVar3, cMsg, nOpc

 HB_SETCODEPAGE('PT850')
 HB_LANGSELECT('PT')

 Clear Screen

 cVar1 := Uppe( "string1" )
 cVar2 := Uppe( "string2" )
 cVar3 := Uppe( "string3" )

 SELECT "Banco_Dados"
 SET INDEX TO "Indice/ordem"
 GO TOP

 While !Eof()
  cVar := Uppe( Nome_do_Campo )
  If ( cVar1 $ cVar ) .And. ( cVar2 $ cVar ) .And. ( cVar3 $ CvAR )
   cMsg := "A variável: " + cVar + ";;"
   cMsg += "Contém as palavras: &cVar1., &cVar2. e &cVar3."
   nOpc := ALERT( cMsg, {"Proxima","Encerrar"})
   IF nOpc != 1
    Exit
   Endi
  Endi

  Skip

 Endd

Return Nil

pesquisar mais de uma sub-string

Enviado: 31 Mar 2012 15:50
por carlos_dornelas
Valeu Jairo, tem hora que dá aquele branco! Acho que estou com excesso de programas na cabeça!

Antonio Carlos