Escrever ao contrario

17 respostas
M

Bom Dia pessoal,

Como eu faço para escrever uma string ao contrario? Por exemplo:

20-06-2006 = 2006-06-20

eu ja tentei diversas formas, ja usei vários for, mas não deu certo.
Alguém poderia me ajudar?

Abraços

17 Respostas

T

O contrário da string “20-06-2006” é “6002-60-02”.

Acho que você quer escrever uma data em formato ano-mês-dia, é isso?

Não é preciso usar “for”; basta usar substring no seu caso.

M

Hum… Hehehe
É verdade, eu queria escrever esta string no formato ano-mes-dia. E como eu faço para usar esta substring?

Abraços

C

Ta ai :slight_smile:

String s = "qualquercoisa";

for(int i = s.length()-1; i >= 0; i--) 
	System.out.print(s.charAt(i));
T

Usando um truquezinho (fazer um tipo de “gabarito” para saber as posições de substring, e lembrar que as posições começam por 0):

[telefone removido]
20-06-2006

O código seria algo parecido com:

String data = "20-06-2006";
String ano = data.substring (6, 10); // posicao inicial, posicao final + 1
String mes = data.substring (3, 5);
String dia = data.substring (0, 2);
data = ano + "-" + mes + "-" + dia;
C

thingol:
Usando um truquezinho (fazer um tipo de “gabarito” para saber as posições de substring, e lembrar que as posições começam por 0):

[telefone removido]
20-06-2006

O código seria algo parecido com:

String data = "20-06-2006";
String ano = data.substring (6, 10); // posicao inicial, posicao final + 1
String mes = data.substring (3, 5);
String dia = data.substring (0, 2);
data = ano + "-" + mes + "-" + dia;

acho que seria mais elegante se fosse assim:

public static void main(String[] args) throws ParseException {
        DateFormat df1 = new SimpleDateFormat("dd-MM-yyyy");
        DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
        Date data = df1.parse("20-06-2006");
        System.out.println(df2.format(data));
    }
T

É claro que é mais elegante (embora mais lento) usar 2 DateFormats.

Mas como dá a impressão que o OP (Original Poster) não sabe usar nem substrings, tenho de começar pelo começo…

M

Thingol,
Realmente eu não sei ainda trabalhar com substrings… Mas do jeito que vc falou resolveu meu problema em parte. Assim ele inverteu a data do jeito que eu queria. Agora essa data teria que ser armazenada num banco de dados. mas eu digito a data e clico em salvar ele não salva. O Banco que eu uso é o mysql.
Eu tenho a seguinte linha de comando

String QueryInsert = "insert into cadastra(data) values("+dataInvertida+")";

mas quando eu vou acesar o banco ele não aceita, aparece outro valor…
Eu queria saber como invertia a data porque o MySQL só aceita o dado de data no formato yyyy-mm-dd
Entendeu?
MAs valew pela ajuda…

P

Vamos supor que sua data chegue assim dd/mm/yyyy vc pode usar esse método:

public String formataDataInsert(String data){
		String[] dataFormatada  = data.split ("/");
		data = dataFormatada[2] + "-" + dataFormatada[1] + "-" + dataFormatada[0] + " 00:00:00";
		System.out.println("data formatada" + data);
		return data;
}
C

voce tb pode usar o charAt()
que e quase a mesma coisa, o numero q voce colocar ali no meio
e q letra ele vai pegar
sendo q ele começa a contar do 0
por exemplo

c a s a
0 1 2 3

a variavel x recebe casa
se eu quizer pergar a letra s
x.charAt(2)
ele retornara o s, ai voce coloca eim qualquer variavel
tem um jeito mais facil

mais eu fiz assim
i=x.length();

while(i>=0)

{

String+=x.charAt(i);

i;

}

JOptionPane.showMessageDialog(null,“ao contrario”,+String);
C

Man, queria uma ajuda. tipo eu tenho que ler uma string exp.: " casa bola carro …" q tenho que imprimir a string ao contrario tipo “carro bola casa”. de forma que nao importe a quantidade de palavras a frase tera de ser invertida.

eu fiz um aqui mas so sei pra duas palavras :smiley:

public static void main(String[] args) {

String s=" “;

char p = 0;

String s1=JOptionPane.showInputDialog(“Entre com o nome:”);

s1=s1.trim();

while( s1.indexOf(” “)>0)

{

p=(char) s1.indexOf(” “);

s=s1.substring(0,p);

s1=s1.substring(p+1);

s1=s1.trim();

}

JOptionPane.showMessageDialog(null, “Nome ao contrario\n”+s1+” "+s)

}

}

espero resposta
T

Use split (método de java.lang.String) para quebrar a string em palavras, e depois concatene as palavras na ordem contrária. Simples, não?

L

thingol:
Use split (método de java.lang.String) para quebrar a string em palavras, e depois concatene as palavras na ordem contrária. Simples, não?

se usar o metodo reverse?

public class Sb3 {
	
	public static void main(String[] args) {
StringBuilder sb =new StringBuilder();
sb.append("camilo");
System.out.println(sb);
System.out.println(sb.reverse());
	}}

flw!

T

Ele não quer a string ao contrário, mas as palavras. (Ele não quer “luis inacio” -> “oicani siul” mas sim “inacio luis”).

T

Manux:
Thingol,
Realmente eu não sei ainda trabalhar com substrings… Mas do jeito que vc falou resolveu meu problema em parte. Assim ele inverteu a data do jeito que eu queria. Agora essa data teria que ser armazenada num banco de dados. mas eu digito a data e clico em salvar ele não salva. O Banco que eu uso é o mysql.
Eu tenho a seguinte linha de comando

String QueryInsert = "insert into cadastra(data) values("+dataInvertida+")";

mas quando eu vou acesar o banco ele não aceita, aparece outro valor…
Eu queria saber como invertia a data porque o MySQL só aceita o dado de data no formato yyyy-mm-dd
Entendeu?
MAs valew pela ajuda…

Tenta assim:

String QueryInsert = "insert into cadastra(data) values('"+dataInvertida+"')";

Porque a data precisa ser um “String”, você estava colocando algo como: 2008-03-28. E isso tentava incluir “1977”

L
String recebida="";

StringTokenizer a = new StringTokenizer( minhadata ) ;

while( a.hasMoreTokens() )

{

recebida = a.nextToken("-") + - + recebida ;

}

recebida = recebida.substring(0, recebida.length-1);
T

Se o problema é para as datas, acredito que o SimpleDataFormat é a melhor opção, porque deixa o programa mais fácil de manter… Ou substrings, mas acredito que não é tão garantido, e se vier uma String menor???

J

Tente usar SimpleDataFormat como foi dito vai facilitar sua vida… e tente utilizar as tag code quando for postar códigos… vai facilitar a nossa.

Criado 20 de junho de 2006
Ultima resposta 29 de mar. de 2008
Respostas 17
Participantes 11