Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
javascool:structures_algorithmiques_de_base:lecture [07/11/2013 10:54] froloff créée |
javascool:structures_algorithmiques_de_base:lecture [05/12/2013 10:41] (Version actuelle) froloff |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ======Lecture====== | ||
- | Chaîne de caractères | + | ===Définition=== |
- | Sommaire | + | |
- | String | + | La lecture consiste a entrer un chiffre, un nombre ou une chaîne de caractère lu au clavier. |
- | StringBuffer, StringBuilder | + | |
- | Quelques fonctions «avancées» | + | |
- | Conversion vers les types primitifs. | + | |
- | Formatage. | + | |
- | matches, split, replaceFirst, replaceAll. | + | |
- | StringTokenizer. | + | |
- | Trois classes chaîne de caractères : String, StringBuffer et StringBuilder. | + | ===Sur Javascool=== |
- | La classe String est une classes dont les objets sont immuables : ils ne peuvent pas changer de valeur. | + | * [[lecture:Lire un chiffre/nombre (readInteger)]] |
- | Les classes StringBuffer et StringBuilder produisent des objets qui peuvent changer de valeur. Ces deux classes ont exactement les mêmes méthodes. | + | |
- | Les méthodes de la classe StringBuffer sont synchronisées, et peuvent être utilisées par plusieurs thread sur une même chaîne de caractères. | + | |
- | Les méthodes de la classe StringBuilder ne sont pas synchronisées, elles sont donc plus rapides que celle de la classe StringBuffer, mais ne sont pas «thread safe». | + | |
- | 1 String | ||
- | |||
- | Les chaînes de caractères littérales de Java (par exemple "abc"), sont représentées comme des instances de cette classe. | ||
- | |||
- | La classe String est une classe spéciale : | ||
- | |||
- | les chaînes de caractères peuvent se concaténer à l’aide de l’opérateur +, ou à l'aide de la méthode concat. Ces deux concaténations ne sont pas équivalentes lorsque l'opérande de droite vaut null. | ||
- | les instances peuvent ne pas être créées explicitement String s = "abc" ; au lieu de String s = new String("abc") ; | ||
- | |||
- | 1.1 Constructeurs | ||
- | String(char[] value) | ||
- | |||
- | String() | ||
- | |||
- | Construit la chaîne vide | ||
- | |||
- | String(byte[] bytes) | ||
- | |||
- | Construit une chaîne de caractères à partir d’un tableau d’octets | ||
- | |||
- | String(byte[] bytes, int offset, int length) | ||
- | |||
- | Construit une chaîne de caractères à partir d’une partie de tableau d’octets | ||
- | |||
- | String(byte[] bytes, int offset, | ||
- | int length, String enc) | ||
- | |||
- | Construit une chaîne de caractères à partir d’une partie de tableau d’octets, et d’un encodage | ||
- | |||
- | String(byte[] bytes, String enc) | ||
- | |||
- | Construit une chaîne de caractères à partir d’un tableau d’octets, et d’un encodage | ||
- | Construit une chaîne de caractères à partir d’un tableau de caractères | ||
- | |||
- | String(char[] value, int offset, int count) | ||
- | |||
- | Construit une chaîne de caractères à partir d’une partie de tableau de caractères | ||
- | |||
- | String(String value) | ||
- | |||
- | Construit une chaîne à partir d’une autre chaîne. | ||
- | |||
- | String(StringBuffer buffer) | ||
- | |||
- | Construit une chaîne à partir d’une autre chaîne de type StringBuffer. | ||
- | |||
- | La concaténation de chaîne peut également se faire à l’aide de la méthode concat(String s). La méthode length() renvoie la longueur ( nombre de caractères) de la chaîne. | ||
- | |||
- | 1.2 Comparaisons | ||
- | |||
- | int compareTo(Object o) | ||
- | |||
- | Compare une chaîne de caractère à un autre objet. Renvoie une valeur <0 ==0 ou > 0 | ||
- | |||
- | int compareTo(String anotherString) | ||
- | |||
- | Compare une chaîne de caractère à un autre objet. Renvoie une valeur <0 ==0 ou > 0. La comparaison est une comparaison lexicographique. | ||
- | |||
- | int compareToIgnoreCase(String str) | ||
- | |||
- | Compare une chaîne de caractère à un autre objet. Renvoie une valeur <0 ==0 ou > 0. La comparaison est une comparaison lexicographique, ignorant la casse. | ||
- | |||
- | boolean equals(Object anObject) | ||
- | |||
- | Compare la chaîne a un objet et retourne true en cas d’égalité et false sinon | ||
- | |||
- | boolean equalsIgnoreCase(Object anObject) | ||
- | |||
- | Compare la chaîne a un objet et retourne true en cas d’égalité et false sinon ( on ignore la casse) | ||
- | |||
- | boolean regionMatches(boolean ignoreCase, | ||
- | int toffset, String other, | ||
- | int ooffset, int len) | ||
- | |||
- | Teste l’égalité de deux parties de chaînes | ||
- | |||
- | boolean regionMatches(int toffset, | ||
- | String other, int ooffset, int len) | ||
- | |||
- | Teste l’égalité de deux parties de chaînes | ||
- | |||
- | 1.3 Caractère et sous-chaîne | ||
- | |||
- | char charAt(int i) | ||
- | |||
- | Retourne le caractère à l’indice spécifié en paramètre. | ||
- | |||
- | String substring(int d) | ||
- | |||
- | Sous-chaîne depuis d jusqu’à la fin | ||
- | |||
- | String substring(int d, int f) | ||
- | |||
- | Sous-chaîne depuis d jusqu’au caractère d’indice f non inclus. | ||
- | |||
- | boolean startsWith(String prefix) | ||
- | |||
- | Renvoie true si prefix est un préfixe de la chaîne | ||
- | |||
- | boolean startsWith(String prefix, int i) | ||
- | |||
- | Renvoie true si prefix est un préfixe de la chaîne à partir de i. | ||
- | |||
- | boolean endsWith(String suffix) | ||
- | |||
- | Retourne true si suffix est un suffixe de la chaîne | ||
- | |||
- | 1.4 Conversions | ||
- | |||
- | String toLowerCase() | ||
- | |||
- | Retourne une chaîne égale à la chaîne convertie en minuscules. | ||
- | |||
- | String toLowerCase(Locale locale) | ||
- | |||
- | Retourne une chaîne égale à la chaîne convertie en minuscules. | ||
- | |||
- | String toString() | ||
- | |||
- | Retourne une chaîne égale à la chaîne | ||
- | |||
- | String toUpperCase() | ||
- | |||
- | Retourne une chaîne égale à la chaîne convertie en majuscules. | ||
- | |||
- | String toUpperCase(Locale locale) | ||
- | |||
- | Retourne une chaîne égale à la chaîne convertie en majuscules. | ||
- | |||
- | String trim() | ||
- | |||
- | Retourne une chaîne égale à la chaîne sans les espaces de début et de fin. | ||
- | |||
- | String replace(char ac, char nc) | ||
- | |||
- | Retourne une chaîne ou tous les ac ont été remplacé par des nc. S’il n’y a pas de remplacement, la chaîne elle-même est retournée. | ||
- | |||
- | static String copyValueOf(char[] data) | ||
- | |||
- | Construit une chaîne de caractères à partir d’un tableau de caractères | ||
- | |||
- | static String copyValueOf(char[] data, | ||
- | int offset, int count) | ||
- | |||
- | Construit une chaîne de caractèresà partir d’une partie de tableau de caractères | ||
- | |||
- | byte []getBytes(String enc) | ||
- | |||
- | Convertit la chaîne en tableau de byte. | ||
- | |||
- | byte []getBytes() | ||
- | |||
- | Convertit la chaîne en tableau de byte. | ||
- | |||
- | void getChars(int srcBegin, | ||
- | int srcEnd, char[] dst, int dstBegin) | ||
- | |||
- | Copie les caractères de la chaîne dans le tableau en paramètres. | ||
- | |||
- | char []toCharArray() | ||
- | |||
- | Convertit la chaîne de caractères en un tableau de caractères. | ||
- | |||
- | static String valueOf(boolean b) | ||
- | |||
- | Retourne la représentation en chaîne du booléen | ||
- | |||
- | static String valueOf(char c) | ||
- | |||
- | Retourne la représentation en chaîne du caractère | ||
- | |||
- | static StringvalueOf(char[] data) | ||
- | |||
- | Retourne la représentation en chaîne du tableau de caractères | ||
- | |||
- | static String valueOf(char[] data, | ||
- | int offset, int count) | ||
- | |||
- | Retourne la représentation en chaîne du tableau de caractères (partie) | ||
- | |||
- | static String valueOf(double d) | ||
- | |||
- | Retourne la représentation en chaîne du double | ||
- | |||
- | static String valueOf(float f) | ||
- | |||
- | Retourne la représentation en chaîne du float | ||
- | |||
- | static String valueOf(int i) | ||
- | |||
- | Retourne la représentation en chaîne du int | ||
- | |||
- | static String valueOf(long l) | ||
- | |||
- | Retourne la représentation en chaîne du long | ||
- | |||
- | static String valueOf(Object obj) | ||
- | |||
- | Retourne la représentation en chaîne de l’objet | ||
- | |||
- | 1.5 Recherche | ||
- | |||
- | int indexOf(int ch) | ||
- | |||
- | Retourne l’indice de la première occurrence du caractère | ||
- | |||
- | int indexOf(int ch, int fromIndex) | ||
- | |||
- | Retourne l’indice de la première occurrence du caractère à partir de fromIndex | ||
- | |||
- | int indexOf(String str) | ||
- | |||
- | Retourne l’indice de la première occurrence de la chaîne | ||
- | |||
- | int indexOf(String str, int fromIndex) | ||
- | |||
- | Retourne l’indice de la première occurrence de la chaîne à partir de fromIndex | ||
- | |||
- | int lastIndexOf(int ch) | ||
- | |||
- | Retourne l’indice de la dernière occurrence du caractère | ||
- | |||
- | int lastIndexOf(int ch, int fromIndex) | ||
- | |||
- | Retourne l’indice de la dernière occurrence du caractère à partir de fromIndex | ||
- | |||
- | int lastIndexOf(String str) | ||
- | |||
- | Retourne l’indice de la dernière occurrence de la chaîne | ||
- | |||
- | int lastIndexOf(String str, int fromIndex) | ||
- | |||
- | Retourne l’indice de la dernière occurrence de la chaîne à partir de fromIndex | ||
- | |||
- | 1.6 Remarque | ||
- | |||
- | La classe String maintient un pool de chaînes de caractères. Dans ce pool sont représentées : | ||
- | |||
- | les chaînes littérales "..." | ||
- | les chaînes pour lesquelles on a fait un appel à le méthode native intern() | ||
- | |||
- | C'est pour celà que la comparaison avec l'opérateur == fonctionne pour les chaines de caractères du pool ! | ||
- | |||
- | String s1 = "abcde"; | ||
- | String s2 = "abcde"; | ||
- | String s3 = new String (s2); | ||
- | String s4 = s3.intern(); | ||
- | System.out.println(s1==s2);// true les deux sont dans le pool | ||
- | System.out.println(s1==s3);// false | ||
- | System.out.println(s1==s4);// true les deux sont dans le pool | ||
- | |||
- | 2 StringBuffer, StringBuilder | ||
- | |||
- | Les StringBuffer sont utilisés pour compiler l’opérateur + de la classe String. Par exemple : | ||
- | |||
- | x = "a" + 4 + "c" | ||
- | |||
- | est compilé en : | ||
- | |||
- | x = newStringBuffer().append("a").append(4).append("c").toString() | ||
- | |||
- | Ces deux classes ont deux attributs : | ||
- | |||
- | char [] value : le tableau dans lequel sont représentés les caractères de la chaîne. La taille de ce tableau est la capacité de la chaîne de caractères. | ||
- | int count : le nombre de caractères présents dans le tableau value. | ||
- | |||
- | 2.1 Constructeurs | ||
- | |||
- | StringBuffer() | ||
- | |||
- | Construit une chaîne vide de capacité initiale de 16 caractères. | ||
- | |||
- | StringBuffer (int l) | ||
- | |||
- | Construit une chaîne vide de capacité initiale de l caractères. | ||
- | |||
- | StringBuffer (String s) | ||
- | |||
- | Construit une chaîne de caractères à partir de la chaîne s | ||
- | |||
- | 2.2 Méthodes | ||
- | |||
- | int capacity() | ||
- | |||
- | la capacité de la chaîne de caractères | ||
- | |||
- | int length() | ||
- | |||
- | la longueur de la chaîne de caractères | ||
- | |||
- | void ensureCapacity (int n) | ||
- | |||
- | Cette méthode redimensionne le tableau, si nécessaire, de façon que la capacité de la chaîne soit au moins égale à n | ||
- | |||
- | void setLength (int n) | ||
- | |||
- | la longueur de la chaîne est n ; les caractères éventuellement ajoutés ont une valeur indéterminée. | ||
- | |||
- | 2.3 Concaténation | ||
- | |||
- | StringBuffer append(boolean b) | ||
- | |||
- | Concatène la représentation en chaîne du booléen. | ||
- | |||
- | StringBuffer append(char c) | ||
- | |||
- | Concatène la représentation en chaîne du caractère. | ||
- | |||
- | StringBuffer append(char[] str) | ||
- | |||
- | Concatène la représentation en chaîne du du tableau de caractères. | ||
- | |||
- | StringBuffer append(char[] str, | ||
- | int offset, int len) | ||
- | |||
- | Concatène la représentation en chaîne du tableau de caractères. | ||
- | |||
- | StringBuffer append(double d) | ||
- | |||
- | Concatène la représentation en chaîne du double. | ||
- | |||
- | StringBuffer append(float f) | ||
- | |||
- | Concatène la représentation en chaîne du float. | ||
- | |||
- | StringBuffer append(int i) | ||
- | |||
- | Concatène la représentation en chaîne du int. | ||
- | |||
- | StringBuffer append(long l) | ||
- | |||
- | Concatène la représentation en chaîne du long. | ||
- | |||
- | StringBuffer append(Object obj) | ||
- | |||
- | Concatène la représentation en chaîne de l’objet | ||
- | |||
- | StringBuffer append(String str) | ||
- | |||
- | Concatène la représentation en chaîne de la chaîne. | ||
- | |||
- | 2.4 Caractère et sous-chaîne. | ||
- | |||
- | char charAt(int i) | ||
- | |||
- | Retourne le caractère à l’indice spécifié en paramètre. | ||
- | |||
- | String substring(int i) | ||
- | |||
- | Sous-chaîne depuis i jusqu’à la fin | ||
- | |||
- | String substring(int i, int l) | ||
- | |||
- | Sous-chaîne depuis i et de longueur l. | ||
- | |||
- | 2.5 Conversions. | ||
- | |||
- | String toString() | ||
- | |||
- | Retourne une chaîne égale à la chaîne | ||
- | |||
- | 2.6 Modifications. | ||
- | |||
- | StringBuffer delete(int start, int end) | ||
- | |||
- | Enlève tous les caractères compris entre start et end. | ||
- | |||
- | StringBuffer deleteCharAt(int index) | ||
- | |||
- | Enlève le caractère à l’indice index | ||
- | |||
- | |||
- | 3 Fonctions avancées sur les chaînes de caractères. | ||
- | |||
- | 3.1 Conversions vers les types primitifs. | ||
- | |||
- | Les classes Byte, Short, Integer et Long possèdent une méthode X.parseX(String s) et une méthode X.parseX(String s, int b) qui permettent de convertir une chaîne de caractères en un entier en considérent cet entier ecrit dans la base b. Si cette conversion n'est pas possible il y levée d'une exception NumberFormatException. | ||
- | |||
- | exemple : | ||
- | |||
- | byte b = Byte.parseByte("-3f", 16); | ||
- | System.out.println(b); | ||
- | |||
- | affiche -63 à la console. | ||
- | |||
- | Les classes Float et Double possèdent une méthode X.parseX(String s) qui permet de convertir une chaîne de caractères en un flottant. Si cette conversion n'est pas possible il y levée d'une exception NumberFormatException. | ||
- | |||
- | La classe Boolean possède une méthode Boolean.parseBoolean(String s) qui permet de convertir une chaîne de caractères en un booléen. Le résultat est true si et seulement si la chaîne de caractères s est non null et si la valeur de la chaîne est "true". | ||
- | |||
- | 3.2 Formatage. | ||
- | |||
- | La classe String est munie de deux méthodes format qui permettent de construire des chaînes de caractères formatées. | ||
- | |||
- | public static String format(String format, Object... args) | ||
- | public static String format(Locale l, String format, Object... args) | ||
- | |||
- | Exemple : | ||
- | |||
- | String s = String.format("|%05d| |%4.2f| |%-4c|", | ||
- | 123, 3.14159, 'a'); | ||
- | System.out.println(s); | ||
- | |||
- | affiche à la console : | ||
- | |||
- | |00123| |3,14| |a | | ||
- | |||
- | Le paramètre format est une chaîne de caractères contenant des spécificateurs de format de structure générale : %[argument_index$][flags][width][.precision]conversion. Ce qui est entre [] est facultatif. | ||
- | |||
- | Nous allons préciser succintement le sens des différents constituants d'un spécificateur de format, pour plus de précision voir ici. | ||
- | Conversion | ||
- | |||
- | Description | ||
- | 'b' 'B' | ||
- | Si l'argument correspondant est null, alors le résultat est false, si l'argument correspondant est un booléen, le résultat est la valeur du booléen, sinon c'est true | ||
- | 'h' 'H' | ||
- | Si l'argument est null alors le résultat est null, sinon le résultat est obtenu par l'appel de Integer.toHexString(arg.hashCode()). Pour un entier, on a sa valeur en héxadécimal. | ||
- | 's' 'S' | ||
- | Si l'argument est null alors le résultat est null, sinonsi l'argument implémente Formattable,alors arg.formatTo est appelé, sinonle résultat est obtenu en appelant toString(). | ||
- | 'c' 'C' | ||
- | Le résultat est le caractère unicode. | ||
- | 'd' | ||
- | Le résultat est un entier décimal. | ||
- | 'o' | ||
- | Le résultat est un entier octal. | ||
- | 'x' 'X' | ||
- | Le résultat est un entier héxadécimal. | ||
- | 'e' 'E' | ||
- | Le résultat est un nombre flottant en notation scientifique. | ||
- | 'f' | ||
- | Le résultat est un nombre flottant en notation décimale (avec un point ou une virgule suivant la locale). | ||
- | 'g' 'G' | ||
- | Le résultat est un nombre flottant en notation décimale, ou scienttifique suivant sa valeur. | ||
- | 'a' 'A' | ||
- | Le résultat est un nombre flottant en héxadécimal, avec son exposant et son significande. | ||
- | 't' 'T' | ||
- | date et time. | ||
- | '%' | ||
- | le résultat est %. | ||
- | 'n' | ||
- | Le résultat est le séparateur de lignes. | ||
- | |||
- | La partie width est le nombre de caractères minimum utilisés pour écrire l'argument correspondant. | ||
- | |||
- | La partie precision est en général le nombre de caractères maximum utilisés pour écrire l'argument correspondant. Pour les nombres flottants ecrits en décimal, il s'agit du nombre de chiffres après la virgule. Pour les nombre entiers, les dates, le % et le séparateur delignes une exception est levée. | ||
- | Flag | ||
- | |||
- | Description | ||
- | '-' | ||
- | le résultat est justifié à gauche. | ||
- | '#' | ||
- | |||
- | '+' | ||
- | Le résultat a toujours son signe. | ||
- | ' ' | ||
- | Le résultat a toujours un espace devant les valeurs positives. | ||
- | '0' | ||
- | Le résultat est étendu à gauche avec des 0. | ||
- | ',' | ||
- | |||
- | '(' | ||
- | Les nombres négatifs sont entre parenthèses. | ||
- | |||
- | 3.3 matches, split, replaceAll, replaceFirst. | ||
- | |||
- | la classe String contient des méthodes ayant un paramètre qui est une expression régulière. | ||
- | |||
- | boolean matches(String regex) | ||
- | |||
- | Retourne true si la chaîne de caractères s'apparie avec l'expression régulière et false sinon. Un appel s.matches(regexp) a le résultat est le même qu'un appel de Pattern.matches(regex, s) | ||
- | |||
- | String replaceAll(String regex, | ||
- | String replacement) | ||
- | |||
- | Retourne la chaîne dans laquelle on a remplacé tous les appariements de regex par replacement | ||
- | |||
- | String replaceFirst(String regex, | ||
- | String replacement) | ||
- | |||
- | Retourne la chaîne dans laquelle on a remplacé le premier appariement de regex par replacement. | ||
- | |||
- | String[]split(String regex) | ||
- | |||
- | Les différents appariements de regex découpent la chaîne de caractères en plusieurs chaînes. Ces chaînes sont retournées dans un tableau de chaînes de caractères. | ||
- | |||
- | Exemple : le code suivant permet de découper un texte en mots et range ces mots dans un tableau. | ||
- | |||
- | String s = "...."; | ||
- | String[] t = s.split("[.,;:?!' ]+"); | ||
- | for( int i = 0; i<t.length; ++i) System.out.println(t[i]); | ||
- | |||
- | 3.4 StringTokenizer. | ||
- | |||
- | La classe StringTokenizer permet de découper une chaîne de caractères en jetons (token). Le résultat du découpage est donné comme une énumération. | ||
- | |||
- | Constructeurs | ||
- | |||
- | StringTokenizer(String s) | ||
- | |||
- | Construit un StringTokenizer sur la chaîne s utilisant les délimiteurs par défaut : | ||
- | |||
- | " \t\n\r\f" | ||
- | |||
- | StringTokenizer(String s, String delim) | ||
- | |||
- | Construit un StringTokenizer sur la chaîne s utilisant les délimiteurs contenus dans delim. | ||
- | |||
- | StringTokenizer(String s, String delim, | ||
- | boolean retourneDelim) | ||
- | |||
- | Construit un StringTokenizer sur la chaîne s utilisant les délimiteurs contenus dans delim, les délimiteurs faisant partie du jeton retourné. | ||
- | |||
- | Méthodes | ||
- | |||
- | public boolean hasMoreTokens() | ||
- | |||
- | Retourne true s'il reste des jetons dans la chaîne et false sinon. | ||
- | |||
- | public String nextToken() | ||
- | |||
- | Retourne le jeton suivant s'il existe et lève une exception NoSuchElementException sinon. | ||
- | |||
- | public String nextToken(String delim) | ||
- | |||
- | Retourne le jeton suivant, en utilisant les délimiteurs delim, s'il existe et lève une exception NoSuchElementException sinon. | ||
- | |||
- | public boolean hasMoreElements() | ||
- | |||
- | Retourne true s'il reste des jetons dans la chaîne et false sinon. | ||
- | |||
- | public Object nextElement() | ||
- | |||
- | Retourne le jeton suivant s'il existe et lève une exception NoSuchElementException sinon. | ||
- | |||
- | public int countTokens() | ||
- | |||
- | Retourne le nombre de jetons restant, en utilisant l'ensemble de délimiteurs courant. | ||
- | |||
- | Exemple : le code : | ||
- | |||
- | StringTokenizer s = new StringTokenizer("Ceci est un, petit, test"); | ||
- | while (s.hasMoreTokens()) { | ||
- | System.out.println(s.nextToken()); | ||
- | } | ||
- | |||
- | Affiche le résultat suivant : | ||
- | |||
- | Ceci | ||
- | est | ||
- | un | ||
- | petit | ||
- | test | ||
+ | * [[Lire un chaîne de caractère (readString)]] | ||