Como saber se uma String está no padrão ASCII?

8 respostas
L

Olá pessoal,

Eu tenho um problemão, já estou a 2 dias tentando resolve-lo e não consigo.

meu problema é o seguinte, eu preciso descobrir se uma String está num determinado padrão de CHARSET, no caso o ASCII (depois acho que consigo me virar com os outros padrões).

Estou lendo um arquivo e separando o texto por linha, então preciso verificar se essa linha esta livre de acento e/ou caracter especiais.

Alguém pode me ajudar?

8 Respostas

R

Leia esses post e veja se ajuda:
http://www.guj.com.br/posts/list/61573.java#323391
http://www.guj.com.br/posts/list/75020.java#394223

L

Obrigado Ricardo Cobain,

Eu já havia visto esses dois posts, o que eu to querendo é um pouco diferente. To tentando usar expressões regulares para saber se a minha String contem ou não acentos e/ou caracteres especiais, mas não sei nada de expressões regulares e estou apanhando muito para montar uma que atenda a minha necessidade. Se você ou alguém souber como montar uma expressão regular para validar se existe caracteres especiais ou acentos, por favor postem aqui, eu to perdidinho nesse assunto.

Segue o meu método para fazer essa validação, utilizando expressões regulares (esse método não funciona)

public static boolean isASCII (String linha) {
		
		
		Pattern padrao = Pattern.compile("([ A-Z ]|[ 0-9 ]|.|-|-|'|(|)|:|_|=)");
		

		Matcher pesquisa = padrao.matcher(linha);

		if (pesquisa.matches()) {
			return true;
		}
		else {
			return false;
		}
	}

Por favor, me ajudem a montar essa expressão, estou perdido mesmo com essas expressões regulares.

Obrigado

T

Amigo, você quer nos dizer exatamente o que você quer aceitar (em vez de o que você quer rejeitar?)

Não ponha como expressão regular; cite exatamente o que você está esperando.

L

A unica coisa que posso aceitar no arquivo que estou lendo são letras maiusculas, numeros de 0 a 9, *(asterisco), .(ponto final), - (hifen), -(subtração), +(adição), () (parenteses), : (dois pontos), _ (underline), =(igual). Acho que isso é o que pode ter no meu arquivo, se tiver qualquer coisa diferente disso, eu tenho que exibir uma mensagem para o usuario tipo: “Caracter invalido.”. Alguém pode me ajudar a montar uma expressão regular para validar isso?

Obrigado.

T

letras maiusculas, numeros de 0 a 9, *(asterisco), .(ponto final), - (hifen), -(subtração), +(adição), () (parenteses), : (dois pontos), _ (underline), =(igual).

Ora, até que é simples. Não se esqueceu dos espaços? Se não tiver espaços, a expressão é esta aqui:

"[A-Z0-9*.+():_=-]+"

Note que o “-” é especial dentro de uma expressão de “range” ([]) e se ela estiver presente, deve ser o último caracter, ou então ser “escapado”.

Se incluir também os espaços, então

"[ A-Z0-9*.+():_=-]+"

Veja o site do Aurélio, se não me engano é www.aurelio.net/er.

I

Aqui não usa expressão regular, mais tlvz te ajude:

http://www.guj.com.br/posts/list/75020.java

L

Obrigado Thingol, ajudou muito, era isso mesmo que eu queria, estava fazendo errado, tentando fazer do jeito mais dificil…hehehe…novato com expressões regulares.

Muito OBRIGADO.

M

leonardo.r.aguiar:
Obrigado Ricardo Cobain,

Eu já havia visto esses dois posts, o que eu to querendo é um pouco diferente. To tentando usar expressões regulares para saber se a minha String contem ou não acentos e/ou caracteres especiais, mas não sei nada de expressões regulares e estou apanhando muito para montar uma que atenda a minha necessidade. Se você ou alguém souber como montar uma expressão regular para validar se existe caracteres especiais ou acentos, por favor postem aqui, eu to perdidinho nesse assunto.

Segue o meu método para fazer essa validação, utilizando expressões regulares (esse método não funciona)

public static boolean isASCII (String linha) {
		
		
		Pattern padrao = Pattern.compile("([ A-Z ]|[ 0-9 ]|.|-|-|'|(|)|:|_|=)");
		

		Matcher pesquisa = padrao.matcher(linha);

		if (pesquisa.matches()) {
			return true;
		}
		else {
			return false;
		}
	}

Por favor, me ajudem a montar essa expressão, estou perdido mesmo com essas expressões regulares.

Obrigado

Só um comentario

Não há por que fazer algo assim

if(pesquisa.matches()){
return true;
}else{
return false;
}

Apenas:

return pesquisa.matches();

já resolve.

^^

Criado 15 de agosto de 2008
Ultima resposta 18 de ago. de 2008
Respostas 8
Participantes 5