Removento Caracteres Especiais

Pessoal tenho uma string como a descrita abaixo e preciso remover caracteres especiais nela, (exceto o enter) estou usando o java 1.3 portanto expressões regulares não me servem. O que posso utilizar ?

· PREDISPOSICAO MAS COM ASSESSORIA DE MERCADO.
· TESTES DE IMPRESSORA.

O problema ocorre quando gero impressão desta string, que por ser um processo batch (COBOL) dependendo da impressora que direciono o relatório acaba saindo com quebras de linhas a mais devido aos caracteres especiais.

Obrigado!

Utilize o método charAT(int) de String para pegar caracter por caracter e testar quais caracteres especiais existem na sua string.

Não fiz o teste, mas deve funcionar algo como:

String myString = "Teste 123\t Teste 123\t Teste 123"; String newString; for(int i = 0 ; i < myString.length() ; i++ ) { if( myString.charAT(i) == '\t' ) { newString += " "; } else { newString += myString.charAT(i); } }

Vale lembrar que o caracter especial que utilizei foi o ‘\t’.

falows!

Como faço para descobrir qual char() corresponde ao marcador de parágrafo ? (o ponto no começo da linha) gostaria de saber tb se existe um comando que remova todos os caracteres especiais, deixando apenas letras de A-Z, números de 0-9 e alguns caracteres válidos (±*/!@#$%&(){}[]?/|). ou tenho que fazer replace character a caracter.

· PREDISPOSICAO MAS COM ASSESSORIA DE MERCADO.
· TESTES DE IMPRESSORA.

Cuidado com o operador “+=” e strings.
Montar uma string caracter a caracter usando “+=” é superlento e cria milhares de objetos (Eu sei que é o único jeito de fazer em VB e Javascript, mas Java não é VB nem Javascript).
Se for possível, use um StringBuffer, ou melhor ainda, se você souber exatamente qual o tamanho final da string, use um char[], e depois use new String(char[]).

Por exemplo (complete esta rotina com a sua especificação):

public String limpa (String s) {
    char ret[] = new char [s.length()];
    for (int i = 0; i < s.length(); ++i) {
         if (....)  { // bom, você é que sabe o que deve fazer aqui...
              ret[i] = s.charAt(i); // copiando o caracter original
         else {
              ret[i] = ' '; // trocando por alguma coisa, tal como vazio
         }
    }
     return new String(ret);
}

Para saber qual é o código: uma dica é arranjar um editor de texto que tenha um modo binário, como o UltraEdit. Peguei o seu texto e vi que é o código hexadecimal 0xB7.

Se você não tem um editor desses, faça um programa como este, que é supersimples:

class Test166 {
    public static void main(String[] args) {
        String s = "· PREDISPOSICAO MAS COM ASSESSORIA DE MERCADO";
        for (int i = 0; i < s.length(); ++i) {
            System.out.println (Integer.toHexString (s.charAt(i)));
        }
    }
}

Ele vai imprimir algo como:
b7
20
50

Não conheço todos os caracteres especiais do Java, aconselho vc a procurar na documentação sobre caracteres epeciais da linguagem.

Vc utiliza a versão 1.3:
http://java.sun.com/j2se/1.3/docs/

A versão 1.4.2:
http://java.sun.com/j2se/1.4.2/docs/

A respeito de um método específico para retirar caracteres especiais, desconheço.

Para retirar o caracter específico vc tem de varrer a String inteira. Dessa forma, para outros caracteres que desejar remover, vc terá que fazer o mesmo trabalho.

De uma olhada na documentação da classe String sobre o método trim(), talvez ele te ajude tb.

blza pessoal vou ver o que consigo sem prejudicar performance.
valew :smiley:

e para colocar os caracteres especiais o que devo fazer?
no meu caso eu pego os dados de um banco Access e onde tem carácter especial
aparece ?(interrogação) .

o que posso fazer?