Verificar caracteres invalidos em uma String

Olá a todos,

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 alguem puder me ajudar seria legal!! :lol:

Valewww!!! :stuck_out_tongue:

que caracteres são validos, afinal?

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á)

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

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!

vou fazer oque vc sugeriu msm, vou fazer uma lista de permitidos, e não de não permitidos…
é mais facil…

valeww!

Olá
Vcs tem o código para esse problema?

Olá, jonatascaberlon.

ai vai um exemplo de como você pode utilizar o “regex” …

[code]import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
*

  • @author Fabio Q.
    */
    public class Main {

    /**

    • @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…

Abraço.

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 “[]” …

Abraço.