preciso verificar se uma String contem algum caracter invalido como "’!@#$%¨&*()-_+§=/°?;:.>,<|[{]}ºª¹²³£¢¬
sei q uma expressão regular é perfeito para isso, mas não estou conseguindo fazer uma.
Se a sua expressão casar com ^\w+$ ( onde \w equivale a um word character : [a-zA-Z_0-9]) ela só contem, do inicio ao fim, pelo menos um caracter letra, numero ou underline.
Se tiver uma @ perdida ja não casa.
Verifique se a sua string pode conter \n, se sim vc tem que utilizar uma expressão regular multi-linha (tem q usar uma flagzinha lá)
mcbarsotti
Todos menos "’!@#$%¨&*()-_+§=/°?;:.>,<|[{]}ºª¹²³£¢¬
e a String tb não pode conter \n, mas acho q a regex que vc me passou vai resolver!!! :lol:
Obrigado peczenyj, vou testar, qq coisa eu retorno! :lol:
[]'s
peczenyj
A tabela ascii tem 255 caracteres. Vc quer todos os 255 - 40 caracteres restantes?
Seria o caso, IMHO, de definir os caracteres válidos pois uma lista negada é uma faca de dois gumes. Fique atento a localização!
mcbarsotti
vou fazer oque vc sugeriu msm, vou fazer uma lista de permitidos, e não de não permitidos…
é mais facil…
valeww!
J
jonatascaberlon
Olá
Vcs tem o código para esse problema?
FabioQuintana
Olá, jonatascaberlon.
ai vai um exemplo de como você pode utilizar o "regex" ...
importjava.io.FileInputStream;importjava.io.IOException;importjava.nio.ByteBuffer;importjava.nio.CharBuffer;importjava.nio.channels.FileChannel;importjava.nio.charset.Charset;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/** * * @author Fabio Q. */publicclassMain{/** * @param args the command line arguments */publicstaticvoidmain(String[]args){// Create matcher on fileStringvalue="Fabio Quintana $";Stringhost="";//* \s -- whitespace (espaço em branco)//* \S -- non-whitespace (não seja espaço em branco)//* \w -- word character [a-zA-Z0-9] (caractere de palavra)//* \W -- non-word character (não caractere de palavra)//* \p{Punct} -- punctuation (pontuação)//* \p{Lower} -- lowercase [a-z] (minúsculas)//* \p{Upper} -- uppercase [A-Z] (maiúsculas)/* aqui você defini qual o tipo de avaliação */Patternpattern=Pattern.compile("\w");/* passa a String a ser avaliada */Matchermatcher=pattern.matcher(value);// Find all matcheswhile(matcher.find()){// imprimi o retorno tratadohost+=matcher.group();}System.out.println(host);}// Converts the contents of a file into a CharSequence// suitable for use by the regex package.publicCharSequencefromFile(Stringfilename)throwsIOException{FileInputStreamfis=newFileInputStream(filename);FileChannelfc=fis.getChannel();// Create a read-only CharBuffer on the fileByteBufferbbuf=fc.map(FileChannel.MapMode.READ_ONLY,0,(int)fc.size());CharBuffercbuf=Charset.forName("8859_1").newDecoder().decode(bbuf);returncbuf;}}
Onde lê a string e retorna apenas o conteudo valido...
para mais informações e parametros, busque por java.util.regex que você vai achar o javadoc...
Abraço.
J
jonatascaberlon
Olá.
Utilizando dessa forma ele mantém somente letras e numeros.
Como posso fazer para que, na mesma “compilação”, o java mantenha caracteres sendo letras, numero, espaço e acentos?
FabioQuintana
jonatascaberlon:
Olá.
Utilizando dessa forma ele mantém somente letras e numeros.
Como posso fazer para que, na mesma “compilação”, o java mantenha caracteres sendo letras, numero, espaço e acentos?
Basta que você troque esta linha;
/* aqui você defini qual o tipo de avaliação */
Pattern pattern = Pattern.compile("\w");
Por algo do tipo;
/* aqui você defini qual o tipo de avaliação, vai agregando os caracteres que você julga valido... */
Pattern pattern = Pattern.compile("[qwertyoiupasdfghjklçzxcvbnm QWERTYOIUPASDFGHJKLZXCVBNM áéíóúêâîôûãõ.,/;:-+=()]");
Apenas um exemplo, ainda falta caracteres, mas basta você incluir todos os que julga valido
incluindo espaço e underline… lembrando que sempre entre “[]” …