Conversion d'une chaine de caractére en entier [Résolu]

Signaler
Messages postés
56
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
29 novembre 2010
-
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
-
<!-- / icon and title -->
<!-- message -->

Salem,
j'ai une chaine de caractére de la forme suivante"a.b.c.d"
je veux faire un test sur ces valeurs.Il faut que tous soit des entiers.
j'utilise Tokenizer pour prendre chaque partie à part(a puis b puis ...) avec le délimiteur point.
mais mon probléme est que lorsque j'utilise.intValue pour la conversion il me retourne un entier donc je sais si a est un entier ou caractére.
comment puis je faire ce test.

<!-- / message -->

4 réponses

Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
24
Salut,

Personnellement j'aurais fait :

public class TestIP {

    public static void main(String[] args) {
        String ip = "192.168.1.2";
        System.out.println(isIPOK(ip));
    }

    public static boolean isIPOK(String ip) {
        ip = ip.replace(".", "/");
        String[] bytes = ip.split("/");
        if (bytes.length != 4)
            return false;
        for (String b : bytes) {
            try {
                int i = Integer.parseInt(b);
                if (i < 0 || i > 255)
                    return false;
            } catch (NumberFormatException e) {
                return false;
            }
        }
        return true;
    }

}

A noter que si je ne remplace pas les points par un autre caractère dans l'ip, ça ne marche pas car dans une expression régulière, le point vaut n'importe quel caractère.
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
98
Salut,

sinon sauce regexp (pour une ipv4):
private static final Pattern IP_PATTERN = Pattern.compile("^((25[0-5]|2[0-4]\\d|1?\\d?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1?\\d?\\d)$");

public static boolean isIpV4(String ip){
  if (ip == null) return false;      
  Matcher m = IP_PATTERN.matcher(ip);
  return m.matches();
}

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
56
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
29 novembre 2010

Salem,
je ne comprends pas ces lignes:
private static final Pattern IP_PATTERN =
Pattern.compile("^((25[0-5]|2[0-4]\\d|1?\\d?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1?\\d?\\d)$");
ma chaine dont je veux faire le test est exactement la suivante adr_IP/netmask
comment je peux exploiter ce que vous me dire.
mouna
Messages postés
5351
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
17 août 2020
98
Salut,

pour reprendre l'exemple de [auteur/JOJOLEMARIOLE/1012781.aspx jojolemariole] :
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" /><title></title><meta name="GENERATOR" content="OpenOffice.org 2.3 (Linux)" /><style type="text/css"><!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
--></style>public class
TestIP {

    private static final Pattern
IP_PATTERN =
Pattern.compile("^((25[0-5]|2[0-4]\\d|1?\\d?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1?\\d?\\d)$");

   
public static void main(String[] args) {
       
String ip = "192.168.1.2";
       
System.out.println(isIpV4(ip));
    }

   
public static boolean isIpV4(String ip){
       
if (ip == null) return false;      
   
    Matcher m = IP_PATTERN.matcher(ip);
   
    return m.matches();
    }

}

la
variable IP_PATTERN est une expression régulière qui
permet de tester la validitée de l'adresse IP.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO