Conversion d'une chaine de caractére en entier

Résolu
moooonaaaa
Messages postés
56
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
29 novembre 2010
- 30 mai 2008 à 09:36
Twinuts
Messages postés
5373
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
10 août 2022
- 30 mai 2008 à 22:37
<!-- / 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

cs_jojolemariole
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
25
30 mai 2008 à 10:08
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.
3
Twinuts
Messages postés
5373
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
10 août 2022
111
30 mai 2008 à 20:25
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
0
moooonaaaa
Messages postés
56
Date d'inscription
jeudi 26 juillet 2007
Statut
Membre
Dernière intervention
29 novembre 2010

30 mai 2008 à 21:14
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
0
Twinuts
Messages postés
5373
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
10 août 2022
111
30 mai 2008 à 22:37
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
0