Split(".") ne fontionne pas!!!

Résolu/Fermé
bloomingdals - 1 avril 2013 à 12:44
 bloomingdals - 1 avril 2013 à 18:04
bonjour, j'ai une methode java qui permet de retourner le type d'une adresse IP (IPv4 ou 6) en fonction du nombre d'octets qui composent l'adresse.

voici la methode:
public String prefixType(String prefix)
{

String prefixType="";
String [] octets =prefix.split(".");
if (octets.length==4)
{
prefixType="IPv4";
}
else if (octets.length==6)
{
prefixType="IPv6";
}
return (prefixType);

}
ca me retourne l'exception out of boundry car quand j'affiche octet[0] je me rend compte que la methode split n'a pas fait son travail??? pourtant avec un separateur ":" ca fonctionne!

comment faire?
merci bcp
A voir également:

3 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
1 avril 2013 à 15:20
Le problème c'est que split prend en paramètre une expression régulière, et que le point est un caractère spécial pour les expressions régulières, il aurait fallu faire un échappement (avec des slash) pour que ça fasse ce que tu veux :

String[] octets = prefix.split("\\.");

Mais pour le traitement particulier des adresses IP, les classes InetAddress sont effectivement plus adaptées...
2
bon je me repond,
j'ai trouvé une solution qui pourra aider ceux qui tombent sur le même probleme.

j'ai utilisé la classe InetAddress de java
j'ai converi ma chaine "10.0.0.0" en une InetAddress
j'ai utilisé la méthode getAddress de la classe InetAddress et voila le code qui fonctionne parfaitement

public String prefixType(String prefix) throws UnknownHostException
{
InetAddress adresse =InetAddress.getByName(prefix);
String prefixType="";
byte [] octets =adresse.getAddress();
if (octets.length==4)
{
prefixType="IPv4";
}
else if (octets.length==6)
{
prefixType="IPv6";
}
return (prefixType);
1
oui ca marche merci bien
0