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á)
@param args the command line arguments
*/
public static void main(String[] args) {
// Create matcher on file
String value = “Fabio Quintana $”;
String host = “”;
//* \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 /
Pattern pattern = Pattern.compile("\w");
/ passa a String a ser avaliada */
Matcher matcher = pattern.matcher(value);
// Find all matches
while (matcher.find()) {
// imprimi o retorno tratado
host += matcher.group();
}
System.out.println(host);
}
// Converts the contents of a file into a CharSequence
// suitable for use by the regex package.
public CharSequence fromFile(String filename) throws IOException {
FileInputStream fis = new FileInputStream(filename);
FileChannel fc = fis.getChannel();
// Create a read-only CharBuffer on the file
ByteBuffer bbuf = fc.map(FileChannel.MapMode.READ_ONLY, 0, (int)fc.size());
CharBuffer cbuf = Charset.forName(“8859_1”).newDecoder().decode(bbuf);
return cbuf;
}
}[/code]
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…
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?
[quote=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?[/quote]
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 “[]” …