Função Split

8 respostas
S

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

8 Respostas

R

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

V

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:

Cada registro em separadao>> 192
Cada registro em separadao>> 168
Cada registro em separadao>> 0
Cada registro em separadao>> 1

VELO

S

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

S

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

T

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

Por exemplo:

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);
  }
}
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.
R
vi que o assunto aqui começou com o split. e estou tendo uma duvida quero separar cada String do arquivo por ";"
public List<String> lerlista(List<String> 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;
	}}

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 ";".

N

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.

V
*robson:
vi que o assunto aqui começou com o split. e estou tendo uma duvida quero separar cada String do arquivo por ";"
public List<String> lerlista(List<String> 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;
	}}

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 ";".

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.

Criado 11 de janeiro de 2005
Ultima resposta 13 de jun. de 2011
Respostas 8
Participantes 8