Introduction à la programmation (420-PK2-SL) cours 20 Gestion des applications Technologie de l’information (LEA.BW)
Plan Aujourd’hui (22/03/2011) Les chaînes de caractère Laboratoire sur les chaînes de caractère Jeudi (24/03/2011) Laboratoire sur les chaînes de caractère Mardi (29/03/2011) Présentation d’algorithme de tri Tableau de nombres Tableau de chaine de caractère (ordre alphabétique) Jeudi (31/03/2011) Examen pratique Mardi (5/04/2011) Examen théorique Remise du devoir 3 8/04/2011 avant 23 h 59.
Longueur d’une chaîne de caractère La méthode length permet d’obtenir la longueur d’une chaîne de caractère. String chaine = "allo"; int taille = chaine.length(); System.out.println(taille); // Affiche 4 chaine = " allo "; taille = chaine.length(); System.out.println(taille); // Affiche 6 chaine = "saint-laurent"; taille = chaine.length(); System.out.println(taille); // Affiche 13 chaine = ""; taille = chaine.length(); System.out.println(taille); // Affiche 0
Accès aux caractères d’une chaîne de caractère La méthode charAt permet d’accéder à un caractère par une position. String chaine = "allo"; System.out.println(chaine.charAt(0)); // affiche a System.out.println(chaine.charAt(1)); // affiche l // Affichage du mot complet (System.out.println(chaine)); fait la même chose. for(int i=0; i<chaine.length(); i++){ System.out.print(chaine.charAt(i)); }
Concaténation de chaînes de caractère Une concaténation est l’action de joindre bout en bout deux valeurs. Par exemple, la concaténation du mot bon et du mot jour donne bonjour. String chaine1 = "bon"; String chaine2 = "jour"; String chaine3 = chaine1+chaine2; System.out.println(chaine3); // Affiche bonjour String chaine4 = chaine1 + "soir"; System.out.println(chaine4); // Affiche bonsoir String chaine5 = chaine1+chaine2+" et " +chaine1+"soir"; System.out.println(chaine5); // Affiche bonjour et bonsoir Note Si on ajoute une valeur de type int la conversion est automatiquement faite en string. int x = 10; int y = 2; int z = x*y; String resultat = "Le résultat de la multiplication entre "+x+" et "+y+" est "+z; System.out.println(resultat); L’opérateureur += peu aussi être utilisé dans la concaténation. Vous pouvez aussi utiliser l’opérateur \t pour faire une tabulation et \n pour faire un saut de ligne. \t est compté comme un caractère avec length et avec charAt.
Recherche dans une chaîne de caractère Les méthodes indexOf et lastIndexOf permettent de trouver la première occurrence ou la dernière d’une chaine de caractère. String chaine = "bienvenue au nordelec"; System.out.println(chaine.indexOf("en")); // Affiche 2 System.out.println(chaine.lastIndexOf("en")); // Affiche 5 System.out.println(chaine.indexOf("e")); // Affiche 2 System.out.println(chaine.lastIndexOf("e")); // Affiche 19 System.out.println(chaine.indexOf("z")); // Affiche -1 System.out.println(chaine.lastIndexOf("z")); // Affiche -1 Vous pouvez créer vos propres fonctions de recherche qui retourne par exemple un tableau avec toutes les positions pour une sous-chaîne de caractère.
Comparaison de chaîne de caractère Comme vous le savez déjà pour comparer des chaînes de caractère vous devez utiliser la méthode equals La méthode compareTo est aussi disponible, mais permet de plutôt de comparer les chaines La méthode s’utilise ainsi chaine1.compareTo(chaine2); Elle retourne -1 si la première chaîne arrive avant la deuxième Elle retourne 0 si les deux chaînes sont égales Elle retourne 1 si la deuxième chaîne arrive avant la première L’ordre de priorité est fixé par la table ASCII
Modification de chaînes Remplacement de caractère avec la méthode replace String chaine1 = "bienvenue au nordelec"; String chaine2 = chaine1.replace('e','a'); System.out.println(chaine2); // Affiche bianvanua au nordalac Extraction de sous chaîne de caractère avec la méthode substring String chaine1 = "bienvenue au nordelec"; String chaine2 = chaine1.substring(13); System.out.println(chaine2); // Affiche nordelec String chaine3 = chaine1.substring(0,9); System.out.println(chaine3); // Affiche bienvenue Mettre en majuscule(toUpperCase) ou en minuscule(toLowerCase) String chaine1 = "bOnJoUr"; System.out.println(chaine1.toLowerCase()); // Affiche bonjour System.out.println(chaine1.toUpperCase()); // Affiche BONJOUR Supprimer les espaces ou les caractères comme \t\n d’une chaîne de caractère avec la méthode trim String chaine1 = " bonjour\t\n "; System.out.println(chaine1.trim()); // Affiche bonjour
Tableaux de chaînes de caractères Comme pour n’importe quel type de donnée, il est possible de créer un tableau de String String jours_semaine[] = {"lundi","mardi","mercredi","jeudi","vendredi","same di","dimanche"}; Les manipulations possibles sur un tableau de caractère sont les mêmes qu’avec les tableaux d’un autre type. Le programme principal reçoit toujours en paramètre un tableau de String (String args[]). Il est possible de voir, les arguments passés en paramètre en faisaient, args[0], args[1]….
Conversion de chaîne de caractère vers un type primitif Il est possible de faire une conversion d’un String vers un autre type de donnée String chaine = " 1234 " ; int x = Integer.parseInt(chaine); Pour convertir une chaîne de caractère en un autre type, vous pouvez utiliser les méthodes suivantes Byte.parseByte Short.parseShort Integer.parseInt Long.parseLong Float.parseFloat Double.parseDouble
Laboratoires sur les chaînes de caractère Créer une classe pratique_chaine.java Créer un programme principal pour tester vos sous- programmes Créer un sous-programme taille_mot qui demande des mots et dit la taille du mot tant que la taille n’est pas 0 ont continu de demander des mots à l’utilisateur. Créer un sous-programme nombre_occurence qui reçoit une chaîne de caractère et une lettre et retourne le nombre d’occurrences de cette lettre dans la chaîne de caractère. Créer un sous-programme enlever_espace qui enlève les espaces dans une phrase reçue en paramètre. Il retourne une nouvelle variable de type String. Attention il peut y avoir des incompatibilités entre le type String et le type char.