softklin Posted December 4, 2007 at 09:16 PM Report Share #152336 Posted December 4, 2007 at 09:16 PM 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 More sharing options...
Knitter Posted December 5, 2007 at 03:03 PM Report Share #152447 Posted December 5, 2007 at 03:03 PM 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 👍 www.sergiolopes.eu Link to comment Share on other sites More sharing options...
softklin Posted December 5, 2007 at 07:02 PM Author Report Share #152509 Posted December 5, 2007 at 07:02 PM 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 More sharing options...
Knitter Posted December 6, 2007 at 10:46 PM Report Share #152781 Posted December 6, 2007 at 10:46 PM Já agora, sei que está resolvido mas só para dar uma dica. Em vez de: [0123456789] pode usar [0-9] www.sergiolopes.eu Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now