Como buscar uma palavra chave dentro de uma string

LAZARO

Member
Licensed User
Longtime User
Boa tarde,
Por falta de material adequado e ser novo no B4 estou tendo dificuldade em buscar uma palavra dentro de uma expressão. Ex: buscar a palavra "madeira" dentro de "cabide de MADEIRA para camisas".
Até fiz uma rotina que deu certo mas de vez em quando não acha o que existe além de estar muito lenta. Até pensei em usar ExecQuery("SELECT.... mas não existe opção para isto.
Alguém sabe de alguma função para tal tarefa ou alguma idéia ?
 

MaxRosa

Member
Licensed User
Longtime User
Existem várias maneiras de fazer isso. Por exemplo:

B4X:
dim str = "cabide de MADEIRA para camisas" As String
if str.Contains("MADEIRA") then
'Faz alguma coisa

Depende exatamente do que você quer fazer. Usar "Select" só se for dentro de um BD.

Você também pode usar Regex para encontrar uma determinada string ou, se deseja extrair o conteúdo de uma há a MidEtxtract da biblioteca StringFunctions.
 

mariobam

Member
Licensed User
Longtime User
Caso pretenda utilizar em um bd sqlite, utilize o operador 'like' da consulta na cláusula where:
Algo assim:
Cursor = SQL1.ExecQuery("SELECT * from produto where descricao like '%" & textobusca & "%'".
 

LAZARO

Member
Licensed User
Longtime User
Isso mesmo, meu objetivo é filtrar todos registros de uma tabela do sqlite contendo uma informação em qualquer posição do campo.
Obrigado Max e Mariobam
 

krlos2004

Member
Licensed User
Longtime User
vou te dar uma dica quente.

SQL1.ExecQuery("SELECT * from produto where descricao like '%" & textobusca & "%'"

pode ser melhorado desta forma

Cursor = SQL1.ExecQuery("SELECT * from produto where descricao like '%" & replace( textobusca, " ", "%" ) & "%'".

desta forma vc esta buscando nao somente uma descricao que contenha, mas também que possa ter palavras combinadas
ex : 'SABAO EM PO OMO DUPLA ACAO'

se vc informar no 1 exemplo, OMO DUPLA, iria achar, porém 'SABAO OMO ACAO', nao iria achar
neste segundo exemplo iria encontrar
 
Top