For each

10 respostas
castiel

Pessoal uma curiosidade

int i = 0;
		for(char c : campo5.toCharArray()) {
			if (!String.valueOf(c).equals("0")) {
				campo5 = campo5.substring(i, campo5.length());
				break;
			}
			i ++;
		}

tenho que criar a variável i ? ou quando faço um foreach ele já tem um indice próprio dele?

10 Respostas

renamed

pelo que eu saiba precisa sim…

pmlm

Sim, neste caso precisas do i. Não precisas é de comparar como String, podes comparar directamente o char.

int i = 0;
for(char c : campo5.toCharArray()) {
    if (c != '0') {
        campo5 = campo5.substring(i, campo5.length());
        break;
    }
    i ++;
}
sergiotaborda

castiel:
Pessoal uma curiosidade

int i = 0;
		for(char c : campo5.toCharArray()) {
			if (!String.valueOf(c).equals("0")) {
				campo5 = campo5.substring(i, campo5.length());
				break;
			}
			i ++;
		}

tenho que criar a variável i ? ou quando faço um foreach ele já tem um indice próprio dele?

O que vc quer fazer ? Esse codigo não faz sentido.
Vc quer retirar os zeros ?

campo5.replaceAll("0","");
pmlm

Agora que vejo melhor o código, se é trabalho da escola, obviamente deixa ficar assim.

Se é para funcionar, podes também usar StringUtils

R

ta meio sem nexo

renamed

Claro que tem nexo… o cara procura o caractere zero e, quando encontra, retira os elementos antes do zero da string…

Pra que ele precisa disso… pode ser um exercício da facul, ou alguma outra regra existente nessa string que, o que tem antes do primeiro zero, não interessa a ele…

O que eu quero dizer é que não entender por que se faz algo não significa não ter nexo…

ok?

pmlm

renamed:
Claro que tem nexo… o cara procura o caractere zero e, quando encontra, retira os elementos antes do zero da string…

Errado. Retira todos os zeros que estão no início da String.

O código do Sergio Taborda também está errado porque ele não quer retirar todos os zeros mas apenas os que estão no início.

castiel

Opa, enquanto estava ausente o tópico movimentou =)
O método é como o pmlm disse: é para tirar os zeros da frente da string, isso acontece devido que estou exportando uma tabela,
que os códigos não são integer e sim varchar, exemplo:
000000000012A4
na hora de passar para o outro banco não quero mais os zeros, dai entra esse método em ação, já que eu não posso converter esse campo para inteiro eu tiro apenas os zeros da string.
no caso o campo acima ira retornar:
12A4
basicamente isso, agora se usar replace, caso aparecer um zero a direita ele vai tirar tbm.

pmlm, Obrigado pela dica do

if (c != 0) {

}

é bem melhor do que ter que converter para string de novo.
B

Usar o StringUtils te salva um tempo, assim como aprender regex:

string.replaceAll("^0+", ""); // retira todos os zeros à esquerda desde o início da string.
castiel

Bruno não sabia que podia se usar regex no replace,
Valeu pela dica!
Fazia um tempo que estava interessado em aprender regex.

Criado 12 de novembro de 2009
Ultima resposta 12 de nov. de 2009
Respostas 10
Participantes 6