Jump to content

[Resolvido] Duvidazita com expressões regulares


softklin

Recommended Posts

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"...  😛

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!  😉

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

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 👍

Link to comment
Share on other sites

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 👍

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.