Substring não está funcionando, AGORA ME DIZ PORQUE!?
18 respostas
felipebonezi
Meu velho, estou a duas horas tentando entender porque cacetadas essa substring não está funcionando!!! :evil: :evil: :evil: :evil:
Alguém consegue ver o que eu não vejo :?: :?: :?: :?:
O que exatamente não funciona? Poderia dar exemplos?
Lucas_Abbatepaolo
Eh gerada alguma exceção ou simplesmente não retorna nada?
mauricioadl
substring gera excecão quando voce passar um parametro maior que a string, ex:
se voce passar 0, 10 e a string for mentor que 10 vai dar pau.
provavelmente o valor da string aux2 é menor que 10
Lucas_Abbatepaolo
mauricioadl:
substring gera excecão quando voce passar um parametro maior que a string, ex:
se voce passar 0, 10 e a string for mentor que 10 vai dar pau.
provavelmente o valor da string aux2 é menor que 10
mais o aux2 ele so usou pra dar o split…ele esta dando substring no array aux3
mauricioadl
mas eh isso mesmo. depois do split no aux2 as strings ficam menores que 10 dae ele tenta dar substring nelas e da exception
// isso da exception aux2 eh pequenaStringaux2="ma";String[]aux3=aux2.split("");for(inti=0;i<aux3.length;i++){Stringaux=aux3[i].substring(0,10);System.out.println(aux3[i]);System.out.println(aux);}// isso nao dá porque aux2 eh grandeStringaux2="mauricioalvesdelima";String[]aux3=aux2.split("");for(inti=0;i<aux3.length;i++){Stringaux=aux3[i].substring(0,10);System.out.println(aux3[i]);System.out.println(aux);}
Lucas_Abbatepaolo
felipebonezi:
Meu velho, estou a duas horas tentando entender porque cacetadas essa substring não está funcionando!!! :evil: :evil: :evil: :evil:
Alguém consegue ver o que eu não vejo :?: :?: :?: :?:
no comentario ai abaixo ele garante q tem mais de 10 letras…
mauricioadl
Lucas Abbatepaolo:
felipebonezi:
Meu velho, estou a duas horas tentando entender porque cacetadas essa substring não está funcionando!!! :evil: :evil: :evil: :evil:
Alguém consegue ver o que eu não vejo :?: :?: :?: :?:
no comentario ai abaixo ele garante q tem mais de 10 letras…
pode ser que o slipt nesse caracter esquisito esteja quebrando a string dele e ele nao esta percebendo.
felipebonezi
Todas as Strings do Array possuem mais de 10 letras.
Lucas_Abbatepaolo
felipebonezi é lancada alguma exceção??
felipebonezi
IndexOutOfBounds :s
Mas o ‘start’ não é menor que 0, nem ‘start’ é maior que ‘end’ e nem ‘end’ é maior que o length da String.
…
felipebonezi
P.S.: Se eu colocar um substring começando em 0, ele pega toda a String e mostra ela normalmente, com mais de 10 letras.
Mas se eu utilizo o substring(start, end) acontece a exceção! :S
E
entanglement
Tio, o Java é diferente do VB. Quando você escreve, em VB:
S = LEFT (T, 10)
onde T é uma string qualquer, você não tem problema nenhum se a string T tiver menos de 10 letras.
Mas Java é meio chata nesse ponto. O equivalente do código acima não é
S = T.substring (0, 10);
porque se T tiver menos de 10 letras, vai dar uma exceção mesmo, e isso está documentado no Javadoc.
Se você quer algo que é igualzinho ao LEFT do VB (ou seja, retorna uma string de 10 ou menos caracteres), use algo como:
S = T.substring (0, Math.min(10, T.length()));
Certo?
mauricioadl
coloca todo o codigo com as strings reais que voce esta usando pra nos aqui.
se a excecao for java.lang.StringIndexOutOfBoundsException é porque voce esta dando substring num valor maior que o maximo.
felipebonezi
Brother,
Analisa isso:
Stringqualquer="Felipe Bonezi É Burro Pra Cacete";Stringaux1=qualquer.substring(0,10);// aux1 == "Felipe Bon"Stringaux2=qualquer.substring(11);// aux2 == "ezi É Burro Pra Cacete"
Estou correto? :S
O problema é que o substring não está funcionando aqui e está dando a Exception IndexOutOfBounds
mauricioadl
felipebonezi:
Brother,
Analisa isso:
Stringqualquer="Felipe Bonezi É Burro Pra Cacete";Stringaux1=qualquer.substring(0,10);// aux1 == "Felipe Bon"Stringaux2=qualquer.substring(11);// aux2 == "ezi É Burro Pra Cacete"
Estou correto? :S
O problema é que o substring não está funcionando aqui e está dando a Exception IndexOutOfBounds
:/
esse codigo a e funciona, mas coloca o codigo verdadeiro que esta dando o erro.
E
entanglement
Felipe (já que você não gostou de ser chamado de “tio”), veja a minha explicação um pouquinho acima, e o Javadoc:
Não fique batendo a cabeça. substring “puro” não funciona do jeito que você quer, e sim do jeito que está documentado. Se quiser que ele funcione do jeito que você quer, use o esquema do “Math.min” que lhe indiquei acima.
felipebonezi
É o seguinte, estou produzindo um aplicativo Android na qual eu “roubo” um conteúdo HTML de uma página. Quando eu dou o encoder desse html para String ele me retorna valores que não estão contidos no padrão de Encoding do Android (Cp1252) e sim em UTF-8. Quando eu converto o Enconding utilizando Bytes para o padrão do Android, começa essa bronca de não funcionar esse substring…
Estou começando a achar que o Enconding não está deixando o substring identificar o padrão da String…
Sei lá! =x
diego.sas
felipebonezi:
Brother,
Analisa isso:
Stringqualquer="Felipe Bonezi É Burro Pra Cacete";Stringaux1=qualquer.substring(0,10);// aux1 == "Felipe Bon"Stringaux2=qualquer.substring(11);// aux2 == "ezi É Burro Pra Cacete"
Estou correto? :S
O problema é que o substring não está funcionando aqui e está dando a Exception IndexOutOfBounds
:/
Fala Felipe…
Cara é o seguinte…
No seu método você esta fazendo o Split…
String[]aux3=aux2.split(" ");
Da uma conferida se todas as posições do seu array esta com mais de 10 caracteres!
Porque se você fizesse…
Stringqualquer="Felipe Bonezi É Burro Pra Cacete";String[]aux3=qualquer.split(" ");Stringaux=aux3[0].substring(0,10); // A posição do aux[0] = Felipe, e Felipe so contém 6 caracteres