Sie sind auf Seite 1von 15

Les chanes de caractres et les fichiers accs squentiel en C#

420-BBT-BB Hiver 2009


Fabrizio Gotti

Introduction
Les chanes de caractres sont des suites de caractres qui reprsentent habituellement du texte Les chanes sont associes au type string vu en classe
string s = "Hal"; string vide = ""; // chane vide

Chaque caractre dans une chane a une position (appele aussi indice). Le 1er caractre a lindice 0.

Concatnation
La concatnation est une opration qui consiste assembler des fragments de chanes ensemble On concatne avec loprateur +
string t = "H" + "al"; t += " "; t += 9000; t = "Je suis " + t; // // // // t t t t vaut vaut vaut vaut 'Hal' 'Hal ' 'Hal 9000' 'Je suis Hal 9000'

Attention : lorsquon fait entier + chane, on a une concatnation de deux chanes, pas une addition arithmtiques

Caractres spciaux
Pour inclure certains symboles dans une chane de caractres, il faut utiliser la barre oblique inverse suivie dun caractre dfini par C#
Pour insrer un guillemet une tabulation un retour chariot On utilise \" \t \n Exemple de chane "C'est \"Hung up\"." "Prnom:\tEric" "Nom:\tTremblay" "A\nL\nL\nO" Sortie lcran si la chane est affiche C'est "Hung up". Prnom: Eric Nom: Tremblay A L L O C:\temp\a.txt

barre oblique inverse

\\

"C:\\temp\\a.txt"

Conversions entre entier et chane


Il est parfois ncessaire de convertir une chane de caractres en entier, et vice-versa Conversion string int
string s = "9000"; int i = int.Parse(s); // i vaut 9000

Conversion int string


int i = 9000; string s = i.ToString(); // s vaut "9000"

Oprations sur les chanes


Les variables de type string permettent certaines oprations utiles La notation gnrale pour lutilisation de ces oprations est la suivante :
rsultat = nomVariableString.NomOpration

Oprations sur les chanes (2)


Longueur dune chane : opration Length Pour trouver le nombre de caractres dans une chane
string chaine = "Cobalt 60"; int longueur = chaine.Length; // longueur de 9

Mise en majuscules : opration ToUpper Mise en minuscules : opration ToLower


string chaine = "Cobalt 60"; string minuscule = chaine.ToLower(); // cobalt 60 string majuscule = chaine.ToUpper(); // COBALT 60 string chaine2 = "Carbone 14"; Console.Out.WriteLine(chaine2.ToUpper());

Oprations sur les chanes (3)


Recherche dans une chane : IndexOf

Recherche un passage dans une chane Retourne lindex (position) du dbut du passage dans la chane Si le passage est l plus dune fois, trouve le premier Lindex du premier caractre dune chane est toujours 0. Si le passage nest pas trouv, la fonction retourne -1.

string w = "Hal 9000"; int positionDuAl = w.IndexOf("al"); // indice 1 string w = "Hal 9000"; int positionDuAl = w.IndexOf("0"); // indice 5 if (w.IndexOf("rouge") == -1) Console.Out.WriteLine("Pas de rouge ici");

Oprations sur les chanes (4)


Extraction dune sous-chane : Substring

Trouve un fragment (sous-chane) commenant une position donne de la chane originale La fonction Substring attend deux paramtres pour prciser la sous-chane extraire :
1. 2.

La position de dpart o commencer extraire La longueur de la sous-chane extraire

Lindex du premier caractre dune chane est toujours 0.

string chaine = "Cobalt 60"; string premierMot = chaine.Substring(0,6); // premierMot vaut maintenant 'Cobalt'

Oprations sur les chanes (5)


Comparaison lexicographique de deux chanes : CompareTo

La fonction retourne un entier dont la valeur indique le rsultat de la comparaison


0 : les deux chanes sont identiques < 0 : la premire chane vient avant la deuxime > 0 : la premire chane vient aprs la deuxime

string chaine1 = "Cobalt 60"; string chaine2 = "Carbone 14"; if (chaine1.CompareTo(chaine2) > 0) Console.Out.WriteLine(chaine1 + " aprs " + chaine2); //affiche le message 'Cobalt 60 aprs Carbone 14'

Les fichiers
Les fichiers stockent linformation de faon persistante (p.ex. un document Word sauvegard) Nous travaillerons avec des fichiers texte (comme ceux crs avec le Bloc-notes de Windows) Nous lirons et crirons les fichiers une ligne la fois, du haut vers le bas; chaque ligne est une string Un fichier a un chemin et un nom, contenu dans une string, p.ex. pour le fichier c:\temp\a.txt, on a
string nomFichier = "C:\\temp\\a.txt";

Pour trouver le nom complet dun fichier


Trouver le fichier dans lExplorateur Windows Cliquer sur le bouton droit et choisir Proprits Le nom complet du fichier = Emplacement + Nom du fichier
Nom du fichier Emplacement

Oprations de base sur les fichiers


Avant toute chose, il faut ajouter, tout au haut du programme, la ligne de code
using System.IO;

Pour vrifier si un nom de fichier dsigne un fichier qui existe, on utilise File.Exists(nomFichier)
if (!File.Exists("c:\\Mes Documents\\rouge.txt")) Console.Out.WriteLine("Fichier inexistant !");

criture dans un fichier


Se fait laide dun nouveau type de variable, le type StreamWriter
string nomFichier = "c:\\temp\\a.txt"; StreamWriter fichierSortie = File.CreateText(nomFichier); fichierSortie.WriteLine("1re ligne de texte"); fichierSortie.WriteLine("2e ligne de texte"); fichierSortie.WriteLine("3e ligne " + "de texte"); // etc. fichierSortie.Close(); // On ferme toujours le fichier !

Si le fichier existe dj, il est cras lorsquon fait CreateText

Lecture dun fichier


Se fait laide dun nouveau type de variable, le type StreamReader
string nomFichier = "c:\\temp\\a.txt";
StreamReader fichierEntree = File.OpenText(nomFichier);

// tant qu'il reste une ligne lire, on la lit // et on l'affiche l'cran string ligne = ""; // ligne lue while (fichierEntree.Peek() > 0) { ligne = fichierEntree.ReadLine(); Console.Out.WriteLine("Lu: " + ligne); } fichierEntree.Close(); // on ferme le fichier