Boa tarde a todos do fórum.
tenho uma dúvida, aparentemente boba sobre conversão de caixa baixa para alta e vice versa…
o caso é o seguinte…
Possuo um Objeto X com os campos a,b,c…do tipo string (para simplificar)…
eu gostaria de passar esses campos para maiusculo, mas não do modo
a.upperCase;
b.upperCase;
c.upperCase;
existe algo no java q eu possa receber um objeto qualker, e retornar todos os campos ja em maiusculo ?
ou teria que fazer no braço mesmo ?
Obrigado !!!
Não existe.
Lembre-se que Strings são imutávels. A simples chamada ao método toUpperCase não muda o valor da String. Você tem que atribuir o retorno do método na variável.
Exemplo:
String str = "um dois três";
str = str.toUpperCase();
[]'s
Fiz um exemplo aqui com reflexão.
Ai sim você pode fazer algo do tipo que você precisa.
[code]import java.lang.reflect.Field;
/**
*
-
@author David Buzatto
*/
public class Pessoa {
private String nome;
private String sobrenome;
private double altura;
public Pessoa( String nome, String sobrenome, double altura ) {
this.nome = nome;
this.sobrenome = sobrenome;
this.altura = altura;
}
@Override
public String toString() {
return nome + " " + sobrenome + " " + altura;
}
public void toUpperCase() {
try {
for ( Field f : getClass().getDeclaredFields() ) {
if ( f.getType().equals( String.class ) ) {
f.set( this, f.get( this ).toString().toUpperCase() );
}
}
} catch ( IllegalAccessException exc ) {
exc.printStackTrace();
}
}
}
/**
*
[]'s
bem, se não existe então imagino que terei q fazer a mão mesmo…
é o seguinte, estou fazendo uma aplicação web, e necessito que todos os campos sejam em letras maiúsculas…
no css existe a propriedade: “text-transform : uppercase” mas ele não envia os dados em maiúsculo, modifica apenas na aparência.
ou estou indo pelo caminho mais dificil, se existir uma solução mais fácil gostaria de saber…
obrigado \o
aahh…gostei do seu exemplo…realmente me deu uma luz, eu kero fazer uma função genérica para receber qualker objeto e converter seus campos para maiúsculo
eu estava fazendo algo do tipo agora…mas estava embolado na parte de pegar os campos do objeto recebido…
Mt obrigado pela ajuda amigo, o pessoal do GUJ é bom mesmo xD
obrigado \o
[quote=well.nunes]bem, se não existe então imagino que terei q fazer a mão mesmo…
é o seguinte, estou fazendo uma aplicação web[/quote]
Acredito que com JavaScript, seria possivel fazer isso.
Ex.:
[code]<html>
<head>
<script type=“text/JavaScript”>
function minusculo(input){
var str=input.value; //obtem o valor
input.value=str.toLowerCase(); //converte as strings e retorna ao campo
}
</script>
</head>
<body>
<form name=“form” method=“POST”>
<center>
Converter Minuscula para Maiuscula
<input type=“text” name=“stringup” onkeyup=“minusculo(this)”>
Converter Minuscula para Maiuscula quando o campo perde o focus<br />
<input type="text" name="stringp" onBlur="minusculo(this)">
</center>
</form>
</body>
</html>[/code]
…
Edit:
Ops, aqui tava ao contrario que vc pediu, convertia de minusculo para maiusculo. Corrigido =D
Obrigado pela ajuda também, estou tentando fazer do modo que o David deu o exemplo,
caso não dê certo vou tentar do seu modo rs…
estou trabalhando nisso agora, posto a solução quando terminar e coloco o topico para [Resolvido]
obrigado denovo a todos pela ajuda
Pronto, esse método resolve seu problema.
Considere a mesma classe Pessoa que postei.
[code]import java.lang.reflect.Field;
/**
*
-
@author David Buzatto
*/
public class Teste {
/**
-
@param args the command line arguments
*/
public static void main( String[] args ) {
Pessoa p = new Pessoa( “João”, “silva”, 1.8 );
toUpperCase( p );
System.out.println( p );
}
public static void toUpperCase( Object obj ) {
try {
for ( Field f : obj.getClass().getDeclaredFields() ) {
f.setAccessible( true );
if ( f.getType().equals( String.class ) ) {
f.set( obj, f.get( obj ).toString().toUpperCase() );
}
}
} catch ( IllegalAccessException exc ) {
exc.printStackTrace();
}
}
}[/code]
beem, eu estava quase lá, sou iniciante em java estava tropeçando nisso : f.setAccessible(true);
Obrigado a todos q ajudaram, vou mudar para resolvido
Até a proxima rs