Classe Collator [resolvido]

3 respostas
Odyo

Galera,

Tenho um projeto pra entregar na Faculdade que le dois arquivos textuais

um primeiro arquivo possui diversas palavras que formarao um indice remissivo

o segundo arquivo trata-se de qualquer texto que vai ser comparado palavra a palavra e se alguma palavra do texto pertencer ao indice, 'e armazenado um registro da linha onde se encontra esta palavra …

o trabalho ja esta pronto mas com uma pequena falha que me incomoda … e com certeza a professora vai cutucar a ferida com pimenta …

Collator collator = Collator.getInstance();
collator.setStrength(Collator.PRIMARY);

int compara = collator.compare("Programa", "programa");
if (compara== 0) 
{
  System.out.println(" iguais ");
} 
else
{
  System.out.println("diferentes");
}

quando as strings Programa, e programa sao comparadas, o programa me diz que sao igual devido ao

collator.setStrength(Collator.PRIMARY);

era exatamente isso que eu queria …

[color=red]A DUVIDA ![/color]
teria como comparar duas Strings e ignorar uma virgula apos a string ?

na verdade nao so uma virgula mas qualquer tipo de simbolo …

programa == programa[color=red]![/color]
programa == programa[color=red]?[/color]

utilizando o Collator ?
Li a API e nao achei nada a respeito …

3 Respostas

ViniGodoy

Esse tipo de coisa o Collator não vai ignorar…

Ele ignora acentuação, ou coisas que interfiram na palavra em si, mas não simbolos extras antes e depois dela.

peerless

Talvez isso possa lhe ser util:

/*
replacex by peerless
*/

   public String replacex(String s, String... r) {
         String retorno = s;
         if ((r.length % 2) == 1) return null;
         else {
             for (int i = 0;i<r.length;i+=2)
                retorno = retorno.replace(r[i],r[i+1]);
         }
         return retorno;
     }

uso: texto = replacex(texto,"!","","?","",".","",",","") ..etc

xyko

use uma Expressão Regular na substituição. Ao invés de

texto = replacex(texto,"!","","?","",".","",",","")

use

texto.replace("[.,!?:]","")

os colchetes em ER representam uma lista. Logo, você pode listar tds os caracteres que devem ser substituidos dentro dos colchetes e substituir por uma string vazia sem a necessidade de criar uma função nova pra isso. Segue um bom guia de expressões regulares: http://guia-er.sourceforge.net/

Criado 22 de maio de 2007
Ultima resposta 22 de mai. de 2007
Respostas 3
Participantes 4