This is an old revision of the document!


TP 3 - Strings et Regex

Strings

Soit une variable str qui est une chaîne de caractères;

Fonctions prédéfinies pour le traitement des chaînes

  • str.length - en réalité il est une variable qui nous donne la longueur de la chaîne
  • str.substring (start, end) - retourne un sous-string à partir de la position start
    • start - position de début de sous-string
    • end - position de fin de sous-string (optionnel)
  • str.split (separator, limit) - divise le string dans un array avec des éléments séparés separator
    • separator - un string avec les caractères séparent les éléments du string original
    • limit - le nombre maximum de divisions (optionnel)
  • str.toUpperCase () - retourne un nouveau string avec toutes les lettres majuscules
  • str.toLowerCase () - retourne un nouveau string avec toutes les lettres minuscules
  • str.indexOf (search, index) - retourne la position de la première occurence de la valeur search dans un string; index est optionnel, il représente la position de début
  • str.lastIndexOf (search, index) - - retourne la position de la dernière occurence de la valeur search dans un string, ou -1;
  • str.trim () - supprime les espaces du début et de la fin du string;
  • str.startsWith (search, position) - retourne une valeur booléenne et vérifie si le string str commence par search
  • str.endsWith (search, positon) - retourne une valeur booléenne et vérifie si le string str se termine par search
  • str.replace (subStr, newSubStr) - retourne un string ou sucStr est remplacé par newSubStr
  • str.charAt (index) - retourne le caractère de la position index

Pour en savoir plus, lisez la documentation String complète.

Expressions régulières

Mathematique

Character Description Exemple
* Zéro ou plusieurs fois a*, (ab)*
+ Une ou plusieurs fois a+, (ab)+
? Zéro ou une fois a?, (ab)?
^ début de string ^ab*
$ fin de string b*a$
. tout symbole .
[ ] Ensemble [abc]
\s Espace blanc a\sb
[^ ] ensemble complémentaire [^abc]
( ) groupe (abc)+
| Ou a | b, (ab) | (ba)

JavaScript

Character Description Exemple
{n} n fois a{3}
{n,m} au moins n, au plus m a{3,7}
\w alphanumérique et _ \w
\t TAB a\ta*
\n fin de linge a\nb
\r retour chariot a\rb
a(?!b) a seulement si non suivi par b a(?!b)
a(?=b) a seulement si suivi par b a(?=b)
( ) group a(ab)a

Pour déclarer des expressions régulières, on peut écrire de deux façons

// making a new RexEx object the standard way
var regex = new RegEx ("[0-9]+");
 
// making a new RegEx object using a shortcut
var regex = /[0-9]+/;

Fonctions supplémentaires

String

  • str.split(separatorRegex, limit) - divise le string dans un array avec des éléments séparés separatorRegex
  • str.match(regex) - Recherche dans le string une sous-string qui suit l'expression régulière
  • 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

  • regex.exec(str) - Recherche dans un string une sous-string qui suit l'expression régulière
var regex = /([0-9]+);([A-Za-z-\. ]+);([0-9]{3,4}[A-Za-z]+)/;
 
var match = 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
*/
  • 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 documentation RegEx complète.

Exercises

Fichiers de groups:

  1. Téléchargez le fichier des étudiants pour votre groupe. Créez un projet nodejs et écrivez dans une chaîne la ligne correspondant à votre nom (ex: var s = '17;ŞOLOT E.C. Mihaela - Sara;1220FA';). Sans utiliser des expressions régulières, résolvez les demandes suivantes:
    1. Affichez la position (index) du prénom dans la string. (0.2p)
    2. Affichez la dernière position de ”;” dans la chaîne. (0.2p)
    3. Traitez le string pour afficher sur des lignes différentes” le prénom, le nom, l'initiale (si elle existe) et le groupe. (0.6p)
  2. Lisez le contenu du fichier de votre groupe dans un string (indice: voir TP 1). Sans utiliser des expressions régulières, résolvez les demandes suivantes:
    1. 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)
    2. Traitez chaque string du tableau et affichez sur des lignes différentes le prénom, le nom et le groupe de chaque etudiant qui est dans le fichier. (0.6p)
  3. Pour chaque ligne de l'exercice 2, créez un objet avec les détails de l'etudiant. Ajoutez les objects dans un tableau. (1p)
  4. Téléchargez le fichier 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 passwd ici. (1p)
  5. Utilisez des expressions régulières pour résoudre l'exercice 2. Vous pouvez utiliser RegEx101 pour écrire l'expression régulière et tester sa validité. (1p)
  6. Utilisez des expressions régulières pour résoudre l'exercice 3. (1p)
  7. Utilisez des expressions régulières pour résoudre l'exercice 4. (1p)
  8. Lisez le fichier java_errors et affichez:
    1. combien d'erreurs y a-t-il (0.5p)
    2. combien de notes y a-t-il (0.5p)
    3. Stockez les informations dans un tableau ayant le format suivant: (0.5p)
      [
         {
            "type":"error" or "note",
            "line":<line_number if it exists>,
            "filename":<file_name if it exists>,
            "description":<the error or note description>
         },
         ...
      ]
    4. Ecrivez le tableau dans un fichier (indice: utilisez JSON.stringify) (0.5p)
  9. Ecrivez un programme qui reçoit comme paramètre un fichier java (ex: applet.java). Lisez le fichier et résolvez les demandes suivantes:
    1. affichez les bibliothèques importées (0.3p)
    2. affichez toutes les classes déclarées (0.3p)
    3. affichez toutes les clases déclarées (nom et et la classe qu'il étend) (0.1p)
    4. affichez toutes les fonctions déclarées (nom et type de retour) (0.3p)
  10. Bonus: Créez un projet nodejs qui reçoit comme paramètre un fichier java et crée un tableau avec des objets pour chacune des classes y déclarées. Chaque objet a le format suivant (1p):
    {
      "name":<name of class>,
      "extends":<name of class it extends>,
      "functions": [
         {
            "name":<function_name>,
            "return_type":<function_return type>,
            "parameters":<number of parameters>
         },
         ...
       ]
    }
alf/laboratoare/03.1583341316.txt.gz · Last modified: 2020/03/04 19:01 by diana.ghindaoanu
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