Terei uma string separada por alguns caracteres.
Ex. 15]100,000[14$81307/1/1
Preciso separar em:
15
100,00
14
81307/1/1 (as barras são parte do que preciso)
O problema.
o que tiver antes do “]” pode variar entre 1 e 4 caracteres
o que tiver entre “]” e “[” pode ser algo como 5,125 (é um percentual)
o que tiver entre “[” e “$” 1 e 2 caracteres
depois do “$” pode ser até 15 caracteres, mas este valor posso pegar usando indexOf(’$’) + 1)
Assim, não querendo disfocar a sua duvida ou a resposta dos amigos, ou mesmo gerar algum flamewar. Mas seria mais para te dar uma opção.
Não sei se é o caso, e se não for me perdoe.
Vi essa sua String e imaginei que é um caso que os programadores ?C? aqui da empresa fazem, gerar uma string por separadores para trafegar na rede. (Ou nas mensagens dos objetos no seu caso).
Resumindo: Porque você não usa objeto? Assim não tem que ficar dando substring e reduz a quantidade de erros que pode dar por strings invalidas.
public class MeuObjeto {
//Não sei os nomes de seus atributos
private int num1;
private float num2;
private int num3;
private Date data1;
//Quem gerar o objeto tem todos os dados
public MeuObjeto(int _num1, float _num2, int _num3, Date _data1){
num1 = _num1;
num2 = _num2;
num3 = _num3;
data1 = _data1;
}
//Daqui para baixo é de quem recebeu o objeto e ai é só dar os gets
public int getNum1() {
return num1;
}
public float getNum2() {
return num2;
}
public int getNum3() {
return num3;
}
public Date getData1() {
return data1;
}
}
Não sei se fui claro, mas se lhe interessar avise.
String t = "15]100,000[14$81307/1/1";
String[] ts = t.split("]|\[|\$");
Para o segundo problema você pode usar o substring(int, int). Os índices você pode pegar com o indexOf().