Tem alguma função em java que eu trato cacacter coringa estou com o seguinte problema:
Bem fiz o seguinte código:
packagecom.algortimos;importjavax.swing.*;publicclassTeste{Stringprim;publicstaticvoidmain(Stringargs[]){Stringt="texto de teste";Stringp="te?to";intprim;intult;Stringpassa;if(p.indexOf("?")>-1){System.out.println("Possui coringa");}else{System.out.println("Não possui coringa");}}}
ele apenas me mostra se em p existe caracter coringa ou não…
tenho que pega uma substring em t e mostrar “texto” alguém tem idéia de como posso fazer isto…?
Tem algum caracter que represento todos galera…??
um tipo “?” ai eu acho que resolveria meu caso…
Ismaels
Acho que a solução para o seu problema é usar regex, mas explique melhor o que você quer porque não ficou claro.
No aguardo… 8)
icarocd
consulte o pacote java.util.regex que ele responde a essas duvidas com patterns em strings
RaulCarlin
Leia na documentação sobre o String.matches() e java.util.regex.Pattern, acho que seja isso…
edymrex
Desculpe se não fui claro galera e porque to na hora do almoço e tenho pouco tempo para resolver isto, vou tentar ser mais objetivo:
Sumponha que eu tenha uma String principal:
String t = “texto de teste”;
e tenho tb outra String a qual eu faço uma busca em t.
String p=“texto”.
E como se eu estiver procurando uma palavra em um texto
t é meu texto e p e a palavra que estou procurando;
Como a gente pode ver a palavra que estamos procurando que é “texto”
existe na palavra principal que é “texto de teste”; Até ai tudo bem o problema é que o usuário terá a opção de colocar um caracter coringa “?”
como sabemos o caracter coringa substitui qualquer outro. então se ele colocar na String p, que é a palavra que estou procurando “te?to” ele tb vai me mostrar “texto”, já que “?” substitiue qualquer caracter. Eu estou fazendo um pequeno editor de texto em java já está quase pronto mais eu presciso colocar o opção de caracter coringa pois é uma exigência,o algortimo de busca estou usando o Boyer Moore o único problema e esse, e simples mais não estou conseguindo fazer…
T
thingol
O coringa da expressão regular é o ponto. Exemplo:
“te.to” bate com “texto”, “te-to” e “testo”.
edymrex
mas no meu cara
“te?to”==“texto”
T
thingol
Então troque “?” por “.”, e use como expressão regular. Simples, não?
edymrex
Soh que eles querem com ‘?’ minha ideia é a seguinte cara acho que estou apanhando mesmo é na lógica mesmo porque acho que ninguém nunca presciso fazer isso por um lado acho bom porque vou aprender coisas nova mas vamos lá… o négocio e quebrar a cabeça e colocar a mão no código
acho que o começo já consegui olha soh…
packagecom.algortimos;importjavax.swing.*;publicclassTeste{Stringprim;publicstaticvoidmain(Stringargs[]){Stringt="texto de teste";Stringp="te?to";if((p.indexOf("?")>-1)){System.out.println("Possui cacacter coringa");}else{System.out.println("Não possui caracter coringa");}}}
Nesta instrução verifica se possui caracter coringa o texto que eu quero procurar neste caso meu caracter coringa e “?”.
Minha idéia é cria um tipo que represente todos eu caracteres neste caso
se ele for procurar e vai encontrar se procurar y vai encontrar e por vai vai…
T
thingol
Amigo, o que estou sugerindo é o seguinte:
Pegue a string, do jeito que lhe passaram (“te?to”).
Para passar a tal string para uma expressão regular, faça o seguinte:
Substitua os “\” por “\\”
Substitua os “.” por “\.”
Substitua os “|” por “\|”
Substitua os “(” por “\(”
Substitua os “)” por “\)”
Substitua os “" por "\”
Substitua os “+” por “\+”
Substitua os “^” por “\^”
Substitua os “$” por “\$”
e por último:
Substitua os “?” por “.”
Assim você terá algo que é uma expressão regular perfeita. Nem precisa usar algoritmos muito complexos; pode (depois dessas substituições) usar as classes Pattern e Matcher sem preocupação nenhuma.
edymrex
Cara desculpe minha burrice vou tentar fazer o que vc falow se der pau eu colocar um nova msg neste tópico valew.