Pegar caracteres intermediários de uma string de tamanho variável

4 respostas
M

Olá Pessoal,

Preciso pegar dois caracteres do meio de uma string que pode variar de tamanho. Por exemplo, tenho essas duas strings:

U0601NM.001
GOH5 0601NM.001 (esta string inclui o espaço em branco)

Preciso pegar os caracteres “01” do meio da string. O tamanho da string é variável, porém os caracteres estão na mesma posição contando da direita para a esquerda. Já tentei usar o substring de várias formas, mas não consegui êxito.

Alguém tem alguma idéia de como posso extrair esses caracteres?

4 Respostas

T

Da direita para a esquerda? Use substring mesmo, mas você vai precisar da função “length()” para determinar o tamanho da string. Você não sabe fazer contas de somar e subtrair?

Por exemplo, no seu caso:

String s = "U0601NM.001";
int n = s.length(); // dá o valor 11
// Contando da direita para a esquerda, você quer o 8o. caracter. Portanto a posição 
// contada a partir do início deve ser o 4o. caracter (11 - 8 + 1), mas como
// o Java começa a contar as posições por 0, teremos a posição = 11 - 8 
int pos = n - 8;
String t = s.substring (pos, pos + 2); // porque você quer uma string com 2 caracteres que começa nessa posição
kooninhas

eu usava o StringTokenizer

D

Eu não consegui entender!!

Você quer que seu programa sempre pegue dois caracteres que estejam no meio da da sua String?

ou

Você que encontrar as posições dos caracteres "01 " em uma String?

M

Eu não consegui entender!!

Você quer que seu programa sempre pegue dois caracteres que estejam no meio da da sua String?

ou

Você que encontrar as posições dos caracteres "01 " em uma String?

DaviPiala, Essa string representa o nome de um arquivo e esses caracteres que quero capturar representam o mês de referência desse arquivo. Nesse caso foi “01” mas poderia ser “02” ou “03” até “12”.

thingol, consegui resolver o problema usando a sua sugestão, mas tive que usar um trim() antes do length() porque algumas strings continham espaços em branco no inicio ou no fim. Agradeço pela colaboração.

Valeu pessoal, T+…

Criado 4 de junho de 2008
Ultima resposta 4 de jun. de 2008
Respostas 4
Participantes 4