Differences

This shows you the differences between two versions of the page.

Link to this comparison view

alf:laboratoare:02_fr_java [2023/03/10 13:11]
alexandra.negoita02 created
alf:laboratoare:02_fr_java [2023/03/14 04:06] (current)
alexandra.negoita02 [Assignment]
Line 1: Line 1:
 ====== TP 2 - Strings et Regex ====== ====== TP 2 - Strings et Regex ======
 +
 +====== Assignment ======
 +<note important>​
 +Vous devez **accepter** l'​assignment d'ici est travailler avec ce **repository**:​ [[https://​classroom.github.com/​a/​NwkWZNIY|Lab 2]]
 +</​note>​
  
 ===== Strings ===== ===== Strings =====
Line 6: Line 11:
 ===Fonctions prédéfinies pour le traitement des chaînes=== ===Fonctions prédéfinies pour le traitement des chaînes===
  
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/length|str.length]]//​ - la longueur ​de la chaîne +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#length()|str.length]]//​ - la longueur ​d'​une ​chaîne ​de caractères 
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/​substring|str.substring (start, end)]]// - retourne ​un sous-string à partir de la position //start// +  * //​[[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​lang/​String.html#​charAt(int)|str.charAt(index)]]/​/ - retourne le caractère qui se trouve a la position //index// 
-    * //start// - position ​de début de sous-string +  * //[[https://docs.oracle.com/javase/7/docs/api/java/lang/​String.html#​substring(int,​%20int)|str.substring(start,​ end)]]// - retourne ​le sous-string à partir de la position //​start// ​jusqu'​à la position //​end// ​(si le dernier paramètre manque ​jusqu'​a le fin du chaine
-    * //end// - position de fin de sous-string (optionnel+  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)|str.split(regex)]]// - divise le string dans un array avec des éléments séparés ​correspondant a l'​expression reguliere ​//regex// 
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/split|str.split (separator, limit)]]// - divise le string dans un array avec des éléments séparés ​par //separator// +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#toUpperCase()|str.toUpperCase()]]//​ - retourne un nouveau string avec toutes les lettres majuscules 
-    * //​separator//​ - un string avec les caractères séparant les éléments du string original +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#toLowerCase()|str.toLowerCase()]]//​ - retourne un nouveau string avec toutes les lettres minuscules 
-    * //limit// - le nombre maximum de divisions (optionnel) +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(int)|str.indexOf(chr)]]// - retourne ​l'​index ​de la premiere ​occurence ​du caractère ​//chr// 
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/toUpperCase|str.toUpperCase ()]]// - retourne un nouveau string avec toutes les lettres majuscules +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#lastIndexOf(int)|str.lastIndexOf(chr)]]// - retourne ​l'​index ​de la dernière occurence ​du caractères ​//chr// 
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/toLowerCase|str.toLowerCase ()]]// - retourne un nouveau string avec toutes les lettres minuscules +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#​trim()|str.trim()]]//​ - on supprime ​tous les espaces du début et de la fin du string 
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/indexOf|str.indexOf (search, index)]]// - retourne ​la position ​de la première ​occurence ​de la valeur ​//search// dans un string;  +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#startsWith(java.lang.String)|str.startsWith(search, ​index)]]// - détermine ​si une chaîne ​commence par les caractères de //​search//​ 
-    * //index// est optionnel, il représente la position de début +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#endsWith(java.lang.String)|str.endsWith(search, ​index)]]// - détermine si une chaîne ​se termine par les caractères de //​search//​ 
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/lastIndexOf|str.lastIndexOf (search, index)]]// - retourne ​la position ​de la dernière occurence ​de la valeur ​//search// dans un string, ou -1; +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#replace(java.lang.CharSequence,​%20java.lang.CharSequence)|str.replace(subStr,​ newSubStr)]]//​ - retourne un nouveau ​string ​avec //​newSubStr// ​au lieu de //subStr//
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/Trim|str.trim ()]]// - supprime les espaces du début et de la fin du string; +
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/startsWith|str.startsWith (search, ​position)]]// - retourne une valeur booléenne et vérifie ​si le string str commence par //search//  +
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/​Global_Objects/String/endsWith|str.endsWith (search, ​positon)]]// - retourne ​une valeur booléenne et vérifie si le string str se termine par //search//  +
-  * //​[[https://​developer.mozilla.org/en-US/docs/Web/​JavaScript/Reference/Global_Objects/String/replace|str.replace (subStr, newSubStr)]]//​ - retourne un string ​ou //sucStr// est remplacé par //​newSubStr//​ +
-  * //​[[https://​developer.mozilla.org/​en-US/​docs/​Web/​JavaScript/​Reference/​Global_Objects/​String/​charAt|str.charAt (index)]]// - retourne le caractère ​de la position ​//index//+
  
-Pour en savoir plus, lisez la [[https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/​Global_Objects/​String|documentation complète]].+Pour en savoir plus, lisez la [[https://docs.oracle.com/javase/7/docs/api/java/lang/String.html|documentation complète]].
  
  
Line 43: Line 43:
 | ( ) | groupe | (abc)+ | | ( ) | groupe | (abc)+ |
 | %% | %% | Ou | a %%|%% b, (ab) %%|%% (ba) | | %% | %% | Ou | a %%|%% b, (ab) %%|%% (ba) |
- 
-==== JavaScript ==== 
-^ Character ^ Description ^ Exemple ^ 
 | {n} | n fois | a{3} | | {n} | n fois | a{3} |
 | {n,m} | au moins n, au plus m | a{3,7} | | {n,m} | au moins n, au plus m | a{3,7} |
Line 56: Line 53:
 | ( ) | group | a(ab)a | | ( ) | group | a(ab)a |
  
-Pour déclarer des expressions régulières,​ on peut écrire de deux façons: ​ +Pour déclarer des expressions régulières,​ on doit declarer les deux classes //Pattern// et //Matcher// qui sont disponibles dans la bibliotheque **java.util.regex**. 
 +  * **Pattern** - Avec les expressions regulieres necessaires;​ 
 +  * **Matcher** - Avec le texte qui on va analyser;
 <code javascript>​ <code javascript>​
 +import java.util.regex.Matcher;​
 +import java.util.regex.Pattern;​
  
-// making a new RexEx object the standard way +public class Main { 
-let regex: RegExp = new RegEx ("[0-9]+"); +    ​public static void main(String[] args) { 
- +        Pattern pattern = Pattern.compile("hello",​ Pattern.CASE_INSENSITIVE); 
-// making a new RegEx object using a shortcut +        ​Matcher matcher = pattern.matcher("​Hello World!"​);​ 
-let regex: RegExp ​/[0-9]+/;+        ​boolean matchFound ​matcher.find(); 
 +        if(matchFound) { 
 +            System.out.println("​Match found"​);​ 
 +        } else { 
 +            System.out.println("​Match not found"​);​ 
 +        } 
 +    } 
 +}
  
 </​code>​ </​code>​
 +
 +Voir aussi la documentation des classes: [[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​regex/​Pattern.html|Pattern]],​ et [[https://​docs.oracle.com/​javase/​7/​docs/​api/​java/​util/​regex/​Matcher.html|Matcher]].
  
 ==== Fonctions supplémentaires ==== ==== Fonctions supplémentaires ====
  
-=== String ​=== +=== Fonctions pour les chaînes de caractères avec Regex === 
-  * //​[[https://​developer.mozilla.org/en/docs/Web/JavaScript/Reference/​Global_Objects/String/split|str.split(separatorRegex,​ limit)]]// - divise le string dans un array avec des éléments séparés //separatorRegex// +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)|str.split(regex)]]// - divise le string dans un array avec des éléments séparés ​par le separateur//regex// 
-  * //​[[https://​developer.mozilla.org/en/docs/Web/JavaScript/Reference/​Global_Objects/String/match|str.match(regex)]]// - Recherche dans le string une sous-string qui suit l'​expression régulière +  * //​[[https://​docs.oracle.com/javase/7/docs/api/java/lang/String.html#​matches(java.lang.String)|str.matches(regex)]]// - Indique si le chaîne de caracteres ​correspond ​ou non à l'​expression régulière ​donnée.
-  * //​[[https://​developer.mozilla.org/​en/​docs/​Web/​JavaScript/​Reference/​Global_Objects/​String/search|str.search(regex)]]// - Recherche une sous-string qui correspond à l'​expression régulière ​et renvoie l'​index de celle-ci ou -1 si elle ne la trouve pas.+
  
-=== Fonctions pour les RegEx === 
- 
-  * //​[[https://​developer.mozilla.org/​en-US/​docs/​Web/​JavaScript/​Reference/​Global_Objects/​RegExp/​exec|regex.exec(str)]]//​ - Recherche dans un string une sous-string qui suit l'​expression régulière 
-<code javascript>​ 
-let regex: RegExp = /​([0-9]+);​([A-Za-z-\. ]+);​([0-9]{3,​4}[A-Za-z]+)/;​ 
- 
-let match: RegExpExecArray|null = regex.exec ('​1;​ANDRONIE S. Manuela - Bianca;​1220F extra text'​);​ 
- 
-/* 
-match: 
-[ '​1;​ANDRONIE S. Manuela - Bianca;​1220F',​ // the full match 
-  '​1',​ // the first group 
-  '​ANDRONIE S. Manuela - Bianca',​ // the second group 
-  '​1220F',​ // the third group 
-  index: 0, // the position 
-  input: '​1;​ANDRONIE S. Manuela - Bianca;​1220F extra text' ] // the full string 
-*/ 
- 
-</​code>​ 
-  * //​[[https://​developer.mozilla.org/​en-US/​docs/​Web/​JavaScript/​Reference/​Global_Objects/​RegExp/​test|regex.test(str)]]//​ - Recherche dans une chaîne une sous-chaîne qui suit l'​expression régulière et renvoie true de celle-ci trouve un ou false sinon 
- 
-Pour plus de fonctions, lisez la [[https://​developer.mozilla.org/​en-US/​docs/​Web/​JavaScript/​Reference/​Global_Objects/​RegExp|documentation RegEx complète]]. 
  
  
Line 103: Line 89:
 Fichiers de groups: Fichiers de groups:
  
-  - Téléchargez depuis le github le fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP2/​BusinessFinancialData.csv|BusinessFinancialData.csv]] qui contient des données financières d'​entreprise. Dans ce document on a stocké le code de l'​entreprise,​ la période de temps, la valeur totale, le sujet, la catégorie et le domaine d'​activité (dans cette ordre précisément). Créez un projet ​nodejs ​et copiez dans une chaîne seulement la ligne numéro 3. Sans utiliser des expressions régulières,​ résolvez les demandes suivantes (seulement a l'aide des **fonctions pour les strings**):+  - Téléchargez depuis le github le fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP2/​BusinessFinancialData.csv|BusinessFinancialData.csv]] qui contient des données financières d'​entreprise. Dans ce document on a stocké le code de l'​entreprise,​ la période de temps, la valeur totale, le sujet, la catégorie et le domaine d'​activité (dans cette ordre précisément). Créez un projet ​Java et copiez dans une chaîne seulement la ligne numéro 3. Sans utiliser des expressions régulières,​ résolvez les demandes suivantes (seulement a l'aide des **fonctions pour les strings**):
     - Affichez la position (index) du sujet dans le string. (**0.2p**)     - Affichez la position (index) du sujet dans le string. (**0.2p**)
     - Affichez la dernière position de " " (\s) dans la chaîne. (**0.4p**)     - Affichez la dernière position de " " (\s) dans la chaîne. (**0.4p**)
Line 110: Line 96:
     - Divisez la chaîne dans un tableau en utilisant le caractère de nouvelle ligne (\n) comme séparateur (//\r\n// pour Windows). (**0.4p**)     - Divisez la chaîne dans un tableau en utilisant le caractère de nouvelle ligne (\n) comme séparateur (//\r\n// pour Windows). (**0.4p**)
     - Traitez chaque string du tableau et affichez sur des lignes différentes le code, la valeur totale et la catégorie de chaque entreprise qui est dans le fichier. (**0.6p**)     - Traitez chaque string du tableau et affichez sur des lignes différentes le code, la valeur totale et la catégorie de chaque entreprise qui est dans le fichier. (**0.6p**)
-  - Pour chaque ligne de l'​exercice 2, créez ​un objet de type Entreprise avec les détails de celle-ci. La méthode reste a votre choix. Ajoutez les objects dans un tableau. (**1p**) +  - Pour chaque ligne de l'​exercice 2, créez ​une classe ​Entreprise avec les détails de celle-ci. La méthode ​de creer les objets ​reste a votre choix. Ajoutez les objects dans un tableau. (**1p**) 
-  - Téléchargez le fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP2/​passwd|passwd]] et lisez-le dans un string. Créez un tableau avec des objets contenant les informations comprises dans le fichier, pour chaque ligne. Vous pouvez trouver des détails sur le format du fichier [[https://github.com/UPB-FILS-ALF/TP/blob/main/​TP2/​passwd|passwd]] ici. (**1p**)+  - Téléchargez le fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP2/​passwd|passwd]] et lisez-le dans un string. Créez un tableau avec des objets contenant les informations comprises dans le fichier, pour chaque ligne. Vous pouvez trouver des détails sur le format du fichier [[https://www.ibm.com/docs/en/aix/7.2?​topic=passwords-using-etcpasswd-file|passwd]] ici. (**1p**)
   - Utilisez des expressions régulières pour résoudre l'​exercice 2. Vous pouvez utiliser [[https://​regex101.com|RegEx101]] pour écrire l'​expression régulière et tester sa validité. (**1p**)   - Utilisez des expressions régulières pour résoudre l'​exercice 2. Vous pouvez utiliser [[https://​regex101.com|RegEx101]] pour écrire l'​expression régulière et tester sa validité. (**1p**)
   - Utilisez des expressions régulières pour résoudre l'​exercice 3. (**1.5p**)   - Utilisez des expressions régulières pour résoudre l'​exercice 3. (**1.5p**)
   - Utilisez des expressions régulières pour résoudre l'​exercice 4. (**1.5p**)   - Utilisez des expressions régulières pour résoudre l'​exercice 4. (**1.5p**)
-  - Lisez le fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP2/​typescript_errors.txt|typescript_errors]] et affichez: +  - **Bonus**: Ecrivez un programme qui reçoit comme paramètre le fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP2/​typescript_class.ts|typescript_class.ts]]. Lisez le fichier et résolvez les demandes suivantes:
-    - combien d'​erreurs y a-t-il (**0.5p**) +
-    - le liste de codes d'​erreur (**0.5p**) +
-    - Stockez les informations dans un tableau ayant le format suivant: (**0.5p**)<​code json> +
-+
-   { +
-      "​type":"​error",​ +
-      "​code":<​erorr_code if it exists>,​ +
-      "​type_error":<​true/​false>,​ //s'il s'agit d'une erreur de type +
-      "​description":<​the error description>​ +
-   }, +
-   ... +
-+
-</​code>​ +
-     - Ecrivez le tableau dans un fichier (indice: utilisez JSON.stringify) (**0.5p**) +
-   - **Bonus**: Ecrivez un programme qui reçoit comme paramètre le fichier [[https://​github.com/​UPB-FILS-ALF/​TP/​blob/​main/​TP2/​typescript_class.ts|typescript_class.ts]]. Lisez le fichier et résolvez les demandes suivantes:+
      - affichez les bibliothèques importées (**0.3p**)      - affichez les bibliothèques importées (**0.3p**)
      - affichez toutes les classes déclarées (**0.3p**)      - affichez toutes les classes déclarées (**0.3p**)
alf/laboratoare/02_fr_java.1678446701.txt.gz · Last modified: 2023/03/10 13:11 by alexandra.negoita02
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0