Ir para o conteúdo
softklin

[Resolvido] Duvidazita com expressões regulares

Mensagens Recomendadas

softklin    12
softklin

Boas pessoal!

Antes de iniciar este tópico, fiz a trivial pesquisa para procurar por questões semelhantes. Apareceram montes delas, em diversas linguagens porém não consegui encontrar a resposta a isto: eu tenho uma string que quero ficar apenas com as letras de 'a' a 'z' e claro, com os espaços.... para isso pus este código

quote = quote.replaceAll("[^a-zA-Z ]","");

Tudo bonito e bastante simples, mas por exemplo se ponho esta frase:

"Nem todos os cães são bravos"

fica:

"Nem todos os ces so bravos"...  :P

O meu problema está em representar estes caracteres ç ã õ... Alguem me consegue alterar esta função para realizar o que pretendo? Pensei em por tudo "à força bruta", do genero [^a-zA-Z ][^çãõâ], só que não sei se haverá metodo mais prático....

Grato pela vossa ajuda!  ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Knitter    101
Knitter

Esse é um problema relacionado com localização. Os caracteres que estás a tentar encontrar vão depender do locale defino no sistema.

Que eu saiba, o java não possui flag nenhuma para fazer esse tipo de verificação, isto é, na API standard que vem com o JDK essa operação não é possivel sem fazeres, como disseste "à força bruta". No entanto podes experimentar usar outra biblioteca de expressões regulares, por exemplo: http://jakarta.apache.org/regexp. Esta biblioteca possui algumas modificações. É uma biblioteca 100% Java e open source.

Não a usei até ao momento, mas julgo ter visto na documentação da API que permitia comparações baseadas no locale e até comparações com Unicode.

Mas esse é um problema que nem o PERL consegue resolver de forma simples, está muito dependente da plataforma.

Se por acaso descobrires uma forma de fazer isso usando a API standard do Java avisa :thumbsup:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
softklin    12
softklin

Bem, infelizmente esqueci-me de referir um ponto, que era que neste trabalho não me permitem usar bibliotecas externas... bem, acabei por resolver desta maneira, embora insuficiente para outros, chega para o que se pretende fazer.

quote = quote.replaceAll("[0123456789]|[\\/?:'+#.*\"=!{}$%)»«(,>]","");

Mais uma vez, obrigado Knitter pela tua ajuda :thumbsup:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade