Busca de String

12 respostas
velo

Galerinha…

Ganhei um pepino pra descascar antes do feriado… tipo eu tenho uma coleção de Strings (palavras legíveis e PT_BR). Necessáriamente não está em ordem, e não precisa retornar em ordem também.

*ABACATE *ACABAXI *CAQUI *MAÇA *PERA *UVA

Preciso filtra por exemplo todos os Strings que comecem com “A” até “Z”. O que teoricamente retorna a lista completa.

*ABACATE *ABACAXI *AMENDOA *CAQUI *MAÇA *PERA *UVA

O filtro tem variações do tipo, todos Strings que comecem com “AMA” até “D”.

*AMENDOA *CAQUI

Conseguiram captar o problema?

Alguem tem uma ideia de como resolver isso?

VELO

12 Respostas

raffaele

expressão regular não resolve seu problema?

velo

Dei uma lida sobre o q é (nem conhecia), mas axo q não resolve…
Usando o mesmo filtro de antes… Imagina uma palavra tipo ambolian (acabei de inventar)…

Pelo q vi naum tem >maior <menor…

Ou não vi direito?

Tipo, se eu passar uma palavra e os limites e ele me retornar true/false tá show já…

VELO>

saulohenry

Com certeza regex resolve qualquer expressão , mas não entendi direito o que vc quer … ordenar e depois filtrar? é isso?

velo

A ordem não importa.

Soh preciso saber se a palavra está dentro dos limites. (AMA e D).

VELO

velo

Achei uma solução muito babaca usando compareTo()

tRuNkSnEt

Completando as respostas acima voce pode tentar :

Comparação de Strings

Metodo

:arrow:boolean equals(Object str)

:arrow:boolean equalsIgnoreCase(String str)

Exemplos:

String s1 = Hello;

String s2 = Hello;

String s3 = HELLO;

System.out.println(s1.equals(s2));retorna true

System.out.println(s1.equals(s3));retorna false

System.out.println(s1.equalsIgnoreCase(s3));retorna true

Metodo
:arrow: int compareTo(String str)

s1.compareTo(s2);

=0: se s1 for igual a s2;
<0 se s1 menor do que s2;

0 se s1 maior do que s2;

Exemplo:
“abc”.compareTo(“abc”); retorno 0
“abc”.compareTo(“cba”); retorno -2
“abc”.compareTo(“aaa”); retorno 1

Procura em Strings

Metodos:

:arrow: int indexOf(String str [, int start])

:arrow: int lastIndexOf(String str [, int start])

Exemplos:
String s = “Aprender desde cedo Java”;
Cada caracter é uma posição iniciando a contagem do 0
Essa string tem 23 caracteres.

int i1 = s.indexOf(“de”); retorno 5
int i2 = s.indexOf(“de”,6)); retorno 9
int i3 = s.lastIndexOf(“de”)); retorno 12
int i4 = s.lastIndexOf(“de”, 8)); retorno 5

:arrow: String substring(int start [, int end]);

String s1 =Exemplo.substring(4);

ploString s2 =Exemplo.substring(4,6);

pega uma substring começando na posição 4 e vai ate a posição 6.

Tem mais alguns se você nao intender ou se esses nao resolver me fala que eu mando mais :slight_smile:

saulohenry

Cara so olhar um pouquinho de regex.É chatinho mais vai funcionar por que , é pra isso que serve, se der vc coloca os dois testes no mesmo string para comparar se não valida depois de passar por dois testes bobos de regex, vou fazer e te mandar mais tarde por que agora to ocupado blz.

saulohenry

O filtro tem variações do tipo, todos Strings que comecem com "AMA" até "D".

não entendi até o “D”.Pode explicar melhor?

saulohenry

Bom mesmo sem entender o “até “D”” vai ai uma expressão pra vc ver:

^ama.d.
ou
^ama\w*d\w

  • amadeu -------- responde ao teste
  • amaridado ----- responde ao teste (palavra inventada blz)
  • aamarildo ----- não responde
  • bamarada — não responde

se é assim que vc queria é essa expressão ai que tens que usar mas, como colocar e testar ajuda um pouco se vc mesmo olhar no artigo do link
http://www.guj.com.br/java.artigo.1.1.guj

Olha , pega a documentação java sobre api na net ou acessa, ta em ingles mas, da pra entender legal , e olha o tutorial sobre java do site da sun que vai te ajudar um bucado tbm a entender blz (ta em ingles tbm).

tRuNkSnEt

Eu sei que regex resolve a parada,como eu mesmo disse

Ele parece ser iniciante penso ser legal saber manipulação de string entao completei as ideias ja LEVANTADAS. :oops:

saulohenry

^ama\wd\w
me corrigindo lá atras blz.

velo

Jah resolvi com o compareTo!

Nem precisou de nada mais avançado!!!

Valeu?

Criado 20 de abril de 2005
Ultima resposta 20 de abr. de 2005
Respostas 12
Participantes 4