| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2006 14:31:52
|
petter
Virtual Machine Man
Membro desde: 28/04/2006 17:11:34
Mensagens: 662
Offline
|
Pessoal tem como eu trocar os caracteres especiais tipo é, ã, ç, etc por respectivamente e, a e c?
|
-----------------------------------------
Java is the future
----------------------------------------- |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2006 14:39:20
|
maquiavelbona
JWizard
![[Avatar]](/images/avatar/24bea84d52e6a1f8025e313c2ffff50a.jpg)
Membro desde: 29/06/2006 09:06:51
Mensagens: 2447
Localização: São Paulo - SP
Offline
|
Existe um método da Classe String chamado replaceAll(String stringAProcurar, String stringQueSeraReposta)
exemplo:
A saída na tela seria: tesear.
Espero ter ajudado.
|
----------------------------------------------------------------
"Within a few years a simple and inexpensive device, readily carried about, will enable one to receive on land or sea the principal news, to hear a speech, a lecture, a song or play of a musical instrument, conveyed from any other region of the globe. "
Nikola Tesla - A means for furthering Peace (1905)
"Gedanken ohne Inhalt sind leer, Anschauungen ohne Begriffe sind blind."
Immanuel Kant - Kritik der reinen Vernunft (1781) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2006 15:47:25
|
jmchel
Smalltalk
Membro desde: 29/06/2006 15:40:20
Mensagens: 1
Offline
|
Cara isso é uma coisa que a um tempo atrás eu tive que fazer, e fiz da forma braçal mesmo.
Tipo, não tem em Java (ou eu não achei ao menos) como fazer um replace passando um conjunto como em JavaScript
var name = "zézinho"
name.replaceAll("éeãa....")
O que eu fiz foi criar uma matriz com entrada e saída. Entrada é o valor que eu espero encontrar na string e saída o que colocar no lugar.
Dae eu fiz replaceAll.
+- isso:
String caracteresEspeciais[][] = new String[54][2];
caracteresEspeciais[0][0] = "á";
caracteresEspeciais[0][1] = "a";
caracteresEspeciais[1][0] = "Á";
caracteresEspeciais[1][1] = "A";
caracteresEspeciais[2][0] = "à";
caracteresEspeciais[2][1] = "a";
caracteresEspeciais[3][0] = "À";
caracteresEspeciais[3][1] = "A";
caracteresEspeciais[4][0] = "â";
caracteresEspeciais[4][1] = "a";
caracteresEspeciais[5][0] = "Â";
caracteresEspeciais[5][1] = "A";
...
Depois num for eu percorro essa string e vou testando se acho na minha entrada algo que tenha que trocar. Era isso.
Não sei se é o certo e tal, mas ta, não perdi mais que 5 minutos pra fazer isso e perderia mais de hora estudando uma outra forma.
Mas da uma olhada em expressões regulares, deve ter algo que faça isso de uma forma mais limpa hehehe.
T+
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2006 16:28:20
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Isto pode ser modificado segundo suas necessidades. Pegue uma tabela ANSI (use o utilitário CharMap.exe do Windows, ou o seu equivalente no Linux) para alterar uma das duas strings abaixo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2008 11:25:22
|
Sebode
Entusiasta Java
Membro desde: 27/12/2006 12:39:55
Mensagens: 15
Offline
|
Ola thingol, eu gostei do seu codigo para nomalização de caracteres especilais, porem eu não entendi o trecho do codigo abaixo:
no if (FIRST_CHAR[aChar - ' '] != ' ') ele pega uma posição do array e verifica se é diferente de vazio, porem essa posição é um valor ou seja um caracter - ' ' como assim?
/** Para a normalização dos caracteres de 32 a 255, primeiro caracter */
private static final char[] FIRST_CHAR =
(" !'#$%&'()*+\\-./0123456789:;<->?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ E ,f'.++^%S<O Z ''''.-"
+ "-~Ts>o ZY !C#$Y|$'(a<--(_o+23'u .,1o>113?AAAAAAACEEEEIIIIDNOO"
+ "OOOXOUUUUyTsaaaaaaaceeeeiiiidnooooo/ouuuuyty")
.toCharArray();
/** Para a normalização dos caracteres de 32 a 255, segundo caracter */
private static final char[] SECOND_CHAR =
(" ' , "
+ "\\ $ r'. + o E '' "
+ " M e # = 'C.< R .-.. ..>424 E E "
+ " E E hs e e h e e h ")
.toCharArray();
/**
* Efetua as seguintes normalizações para obtenção de certificados:
* - Elimina acentos e cedilhas dos nomes;
* - Converte aspas duplas em simples;
* - Converte algumas letras estrangeiras para seus equivalentes ASCII
* (como ß, convertido para ss)
* - Põe um "\" antes de vírgulas, permitindo nomes como
* "Verisign, Corp." e de "\", permitindo nomes como " a \ b ";
* - Converte os sinais de = para -
* - Alguns caracteres são removidos:
* -> os superiores a 255,
* mesmo que possam ser representados por letras latinas normais
* (como s, = U+015E = Latin Capital Letter S With Cedilla);
* -> os caracteres de controle (exceto tab, que é trocado por um espaço)
* @param str A string a normalizar.
* @return A string normalizada.
*/
public static String normalize(String str) {
char[] chars = str.toCharArray();
StringBuffer ret = new StringBuffer(chars.length * 2);
for (int i = 0; i < chars.length; ++i) {
char aChar = chars[i];
if (aChar == ' ' || aChar == '\t') {
ret.append(' '); // convertido para espaço
} else if (aChar > ' ' && aChar < 256) {
if (FIRST_CHAR[aChar - ' '] != ' ') {
ret.append(FIRST_CHAR[aChar - ' ']); // 1 caracter
}
if (SECOND_CHAR[aChar - ' '] != ' ') {
ret.append(SECOND_CHAR[aChar - ' ']); // 2 caracteres
}
}
}
return ret.toString();
}
/** Para a normalização dos caracteres de 32 a 255, primeiro caracter */
private static final char[] FIRST_CHAR =
(" !'#$%&'()*+\\-./0123456789:;<->?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ E ,f'.++^%S<O Z ''''.-"
+ "-~Ts>o ZY !C#$Y|$'(a<--(_o+23'u .,1o>113?AAAAAAACEEEEIIIIDNOO"
+ "OOOXOUUUUyTsaaaaaaaceeeeiiiidnooooo/ouuuuyty")
.toCharArray();
/** Para a normalização dos caracteres de 32 a 255, segundo caracter */
private static final char[] SECOND_CHAR =
(" ' , "
+ "\\ $ r'. + o E '' "
+ " M e # = 'C.< R .-.. ..>424 E E "
+ " E E hs e e h e e h ")
.toCharArray();
/**
* Efetua as seguintes normalizações para obtenção de certificados:
* - Elimina acentos e cedilhas dos nomes;
* - Converte aspas duplas em simples;
* - Converte algumas letras estrangeiras para seus equivalentes ASCII
* (como ß, convertido para ss)
* - Põe um "\" antes de vírgulas, permitindo nomes como
* "Verisign, Corp." e de "\", permitindo nomes como " a \ b ";
* - Converte os sinais de = para -
* - Alguns caracteres são removidos:
* -> os superiores a 255,
* mesmo que possam ser representados por letras latinas normais
* (como s, = U+015E = Latin Capital Letter S With Cedilla);
* -> os caracteres de controle (exceto tab, que é trocado por um espaço)
* @param str A string a normalizar.
* @return A string normalizada.
*/
public static String normalize(String str) {
char[] chars = str.toCharArray();
StringBuffer ret = new StringBuffer(chars.length * 2);
for (int i = 0; i < chars.length; ++i) {
char aChar = chars[i];
if (aChar == ' ' || aChar == '\t') {
ret.append(' '); // convertido para espaço
} else if (aChar > ' ' && aChar < 256) {
if (FIRST_CHAR[aChar - ' '] != ' ') {
ret.append(FIRST_CHAR[aChar - ' ']); // 1 caracter
}
if (SECOND_CHAR[aChar - ' '] != ' ') {
ret.append(SECOND_CHAR[aChar - ' ']); // 2 caracteres
}
}
}
return ret.toString();
}
Obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2008 13:57:36
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Debugue o programa , e veja o que ocorre. É mais fácil que eu tentar explicar.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2008 14:04:52
|
m0sk4
Smalltalk
![[Avatar]](/images/avatar/fbf53b6b39318c7b0933758ffc2a167e.jpg)
Membro desde: 11/02/2008 14:56:07
Mensagens: 3
Offline
|
http://www.guj.com.br/posts/list/85693.java#458584
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/11/2009 13:00:57
|
vymerson
What is classpath?
![[Avatar]](/images/avatar/27e5913e401960ad17e24f9a435e11d2.png)
Membro desde: 14/08/2008 16:30:56
Mensagens: 6
Localização: Mato Grosso do Sul - Campo Grande
Offline
|
Temos um outra opção também mais resumida:
public static String formatString(String s) {
String temp = Normalizer.normalize(s, java.text.Normalizer.Form.NFD);
return temp.replaceAll("[^\\p{ASCII}]","");
}
|
Seja a mudança que você deseja ver no mundo. "Mahatma Gandhi" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/11/2009 13:19:42
|
vitor lima
JavaBaby
![[Avatar]](/images/avatar/7d2bb55bb8d4a35025b15eb652920f3d.jpg)
Membro desde: 14/04/2009 09:16:59
Mensagens: 92
Offline
|
Talvez ?
This message was edited 1 time. Last update was at 06/11/2009 13:20:26
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/11/2009 13:31:31
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
petter wrote:Pessoal tem como eu trocar os caracteres especiais tipo é, ã, ç, etc por respectivamente e, a e c?
Utilize java.text.Normalizer e regex . Veja um exemplo aqui
Nada de gambiarra.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
|
|