Substring

Olá colegas do GUJ

Novamente estou com uma dúvida, agora sobre as funcionalidades de um método da classe String, o “subtring()”.

Meu professor me pediu para armazenar em uma string todos os meses por extenso, exemplo: “janeiro, fevereiro, março… dezembro”, onde devo completar com espaços os meses para que fiquem todos do mesmo tamanho e depois através de uma classe chamada ObterMes, informar um número de mês (int) para que apareça o correspondente em texto.

Agora as dúvidas:

  1. O método substring permite que eu retorne a sequência da string a partir de um determinado ponto, quando informo apenas um valor de int dentro do mesmo e quando informo dois numeros ele vai até a posição pelo primeiro int e pelo segundo retorna a qtde de caracteres da string certo?

  2. Suponhamos que minha string tenha 10 caracteres até chegar a cada virgula que separa o nome de cada mês, de que jeito que isso vai funcionar usando o substring?

Fui confuso? :oops:

não entedi muito bem o que vc quer

vc pode usar o IndexOf para retornar a posição da virgula e usar o indice retornado no seu substring

mais ou menos isso, nao sei se entendi direito…

class Meses{
	private String m = "janeiro   ,fevereiro ,marco     ," + 
				    "abril     ,maio      ,junho     ,julho     ," + 
				    "agosto    ,setembro  ,outubro   ," + 
				    "novembro  ,dezembro  ";
	
	public Meses(){}
	
	public String obterMes(int n){		
		int inicio = (n-1)*10;		
		return m.substring((inicio + n - 1), inicio+10+n-1);
	}
}

Se vc tem um separador, use o Split entao…

substring não tem stress, é o ponto inical e o ponto final que vc quer cortar.

Exemplo:

Teste
01234

substring(0,2) = Te
substring(1,4) = est
substring(0,5) = Teste

Repara que o caracter da última posição não é incluido!

E o primeiro caracter é o Zero :smiley:

Agora se tens meses janeiro,fevereiro,março,abril…

Podes fazer assim:

String nome_meses = "janeiro,fevereiro,março,abril";
String[] meses = nome_meses.split(",");
for (int x = 0; x < meses.length; x++) {
  System.out.println(meses[x]);
}

Vocês foram na ferida, certinho mesmo… dos dois jeitos da certo, a questão é que ele está ensinando substring se usar split, se eu usar ele vai considerar errado.
Mas deu certinho os dois exemplos.

Obrigado a todos novamente.

Se não puder usar split, basta iterar os caracteres com um laço e o indexOf e quando achar a vírgula, substituí-la por um espaço vazio “” ou em branco " "