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 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 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 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 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 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 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
Rejoignez-nous