Função Split

Pessoal…

Como posso fazer para pegar os elementos de uma String separados por “.”?
Tenho uma String que contém um IP.
Exemplo:
private String ip = “100.100.100.100”;

acontece que um IP nem sempre contém os 3 dígitos entre cada “.”
Preciso pegar qtos números existirem até o “.” e aplicar uma lógica pra cada grupo lido.
Pesquisando na web, encontrei a função “split”, onde se especifica o caracter limitador…
Alguém pode ajudar?

Valeu

Eh metodo, nao funcao :slight_smile:

“.” eh um caracter especial em expressao regular, representando qualquer caracter. Para splitar por ponto, vc precisa “escapar” o mesmo usando uma barra:

String[] partes = ip.split("\.");

Rafael

Tem essa alternativa tbm:

public class QuebrarIP { public static void main(String[] args) { String ip = "192.168.0.1"; StringTokenizer st = new StringTokenizer(ip, "."); while (st.hasMoreTokens()) System.out .println("Cada registro em separadao>> " + st.nextToken()); } }

Que retorna:

[quote]Cada registro em separadao>> 192
Cada registro em separadao>> 168
Cada registro em separadao>> 0
Cada registro em separadao>> 1
[/quote]

VELO

e mais uma alternativa… mas nem eu usaria essa :slight_smile: fica chato porque os bytes são “signed” e valores acima de 127 ficam negativos.

import java.net.InetAddress;

public class Untitled3 {

  public static void main(String[] args) {
    try {
      InetAddress addr = InetAddress.getByName("192.194.66.172");
      byte[] ip = addr.getAddress();
      for(int i=0; i < ip.length; i++) {
        int token = (ip[i] < 0) ? 256 + ip[i] : ip[i];
        System.out.println(token);
      }
    } catch(Exception e) {
      e.printStackTrace();
    }
  }

}

-Sami

Valeu pessoal…

Usei a dica de StringTokenizer… e funcionou…
Aproveitei tb para testar usando Split e tb deu certo.
O único problema é que não pude usá-la em vista de estar usando uma jdk diferente no meu aplicativo.

Valeu e até a próxima

Abraços

Entendi sobre o método Tokenizer. E como seria pra armazenar cada valor desse num array?

Por exemplo:

[code]public class Utilitario2 {
public void recebe (String quebra) {
String[] separa;
int n=0, i=0;
StringTokenizer st = new StringTokenizer(quebra, “;”);
while (st.hasMoreTokens()) {
separa[i]=st.Token();
i++;
st.nextToken());
}
System.out.println("Valor do array "+n+"e: "+separa[n]);
}

public static void main (String args[]) {
String meses=“Janeiro;Fevereiro;Março;Abril;Maio;Junho;”;
Utilitario2 util=new Utilitario2();
util.recebe(meses);
}
}[/code]
Eu quero que ele pegue a string meses, varra ela armazenando num array de strings e quando encontrar “;” ele pule pro próximo array.
Ex:
array[0]=Janeiro;
array[1]=Fevereiro;
e assim sucessivamente.

vi que o assunto aqui começou com o split. e estou tendo uma duvida
quero separar cada String do arquivo por “;”

[code] public List lerlista(List lista) throws IOException{
File arq = new File(nome);

	FileInputStream stream = new FileInputStream(arq);
	InputStreamReader reader = new InputStreamReader(stream);
	BufferedReader bufReader = new BufferedReader(reader);
		String linha = bufReader.readLine();
		
		if (linha != null) {
			String[]	nova = linha.split("\;");
			retorno.addAll(nova);

	}
		
			
		return retorno;
}}

[/code]

fiz este código acima só que retorno não recebe o array nova
alguém sabe coommo faço para separa estas Strings por “;”.

Oi!

Só assim, a Oracle recomenda a substituição da classe StringTokenizer pelo método Split.
Quem tem dúvida, veja aqui.

E *robson, tem certeza que o conteúdo de sua String contém “;” ?
Tire o // e coloque apenas o “;”.

Abraços.

[quote=*robson]vi que o assunto aqui começou com o split. e estou tendo uma duvida
quero separar cada String do arquivo por “;”

[code] public List lerlista(List lista) throws IOException{
File arq = new File(nome);

	FileInputStream stream = new FileInputStream(arq);
	InputStreamReader reader = new InputStreamReader(stream);
	BufferedReader bufReader = new BufferedReader(reader);
		String linha = bufReader.readLine();
		
		if (linha != null) {
			String[]	nova = linha.split("\;");
			retorno.addAll(nova);

	}
		
			
		return retorno;
}}

[/code]

fiz este código acima só que retorno não recebe o array nova
alguém sabe coommo faço para separa estas Strings por “;”.[/quote]

Meu camarada, faça assim:String[] nova = linha.split(";");

Claro, sua variável tem que ter esse formato: ----;----;----

Onde “----” é o que cada índice do array nova vai armazenar.

Veja aqui.