Section courante

A propos

Section administrative du site

 Langage  Installation  Elément  Tutoriel  Programmation  Bibliothèque  Cadre d'application  SDK  Gabarit  Projet  IDE  Outils  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Visual C# 2005 Express
Visual Studio .NET 2003
Visual Studio 2005
Visual Studio 2008
Visual Studio 2010
Visual Studio 2012
Visual Studio 2013
Visual Studio 2015
Visual Studio 2017
Visual Studio 2019
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instructions de boucles
Les instructions d'exceptions
Type de données élémentaires
Définition de variables
Définitions de tableaux
Requêtes de données (LINQ)
Référence des mots réservés
Référence des espaces de nom (Namespace)
Les classes
Références des classes
Directives de préprocesseur C#
Les nombres
Les chaines de caractères
Date et heure
Vue par catégorie
Les interfaces
Les classes abstraites
Les classes scellés
Les indexeurs
Les premiers pas
Les fondements de C#
Les types primitifs et variables
Les opérateurs et les expressions
Les entrées/sorties de la console
Les déclarations conditionnelles
Les déclarations de boucles
Les systèmes numériques
Traitement des chaînes de caractères et du texte
WinForms (Windows Forms)
Les opérations
Conversion de string à int
Bonjour
Astronomie
Base de données
Biochimie
Chaine de caractères
Electricité
Finance
Géographie
Géométrie
Gouvernement
Histoire
Mathématique
Médicale
Météorologie
Océanographie
Sport
Système d'exploitation
Temps
Tri
Trigonométrie
Validation
Phase lunaire
Table SQL Server
Calcul du calcium corrigé
Calcul le taux d'alcoolémie
Nombre réel avec un certain nombre de décimal
Majuscule (strtoupper ou UpperCase)
Minuscule (strtolower ou LowerCase)
Calcul du tarif d'une piscine pour 1 mois
IPaymt/Interet
NPer
PPaymt/Principal
Distance en Km entre deux longitudes et latitudes
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
Taxe de vente canadienne
Chiffre romain
Ackermann
Exp
Factoriel
Fibonacci
Log
Nombre premier
Odd
Random
Sqrt
Triangle Pascal
Valeur absolue (ABS)
Hauteur utérine
Unité de mesure
Fréquence des vagues
Hockey
Variables d'environnement
Année bissextile
Date de la Pâque
Heure courante
FirstDayOfMonth
Tri à bulle (Bubble Sort)
Tri Shell Sort
ArcCos
ArcSin
Atn/ATan/ArcTan/ArcTangente
Cos
Sin
Courriel
ALGLIB
Dapper
ElmahCore
FluentFTP
log4net
MailKit
MediatR
MimeKit
Newtonsoft.Json (Json.NET)
Serilog
.NET
.NET Core
.NET Framework
Accord.NET Framework
Akka.NET
ASP.NET
ASP.NET Core
Avalonia UI
Blazor
Entity Framework
Entity Framework Core (EF Core)
Hangfire
Infer.NET
MAUI
ML.NET
Mono
NHibernate
NUnit
Unity
xUnit.net
Azure SDK for .NET
AWS SDK for .NET
Bot Framework SDK
Razor
Umbraco
Rider
Visual Studio
Visual Studio Code
Visual C# 2005 Express
Xamarin Studio
Visual Studio .NET
Visual Studio .NET 2003
Visual Studio 2005
Visual Studio 2008
Visual Studio 2010
Visual Studio 2012
Visual Studio 2013
Visual Studio 2015
Visual Studio 2017
Visual Studio 2019
Visual Studio 2022
ELMAH
elmah.io
MS Build Tools
NuGet
WiX Toolset
Add-in Express
csc (C# Compiler)
CFF Explorer
IL DASM
ILMerge
.NET Reflector
Salamander .NET Decompiler
Références des codes d'erreur du C# (C Sharp)
Base de connaissances
Conventions de nommage
Vocabulaire
Marqueurs
Archives de paquet externe
Bibliographie
Préface
Notes légal
Dictionnaire
Recherche

Traitement des chaînes de caractères et du texte

Le langage de programmation C# offrent différentes méthodes pour manipuler un texte : comme par exemple comparer des chaînes de caractères, rechercher des sous-chaînes de caractères, extraire des sous-chaînes de caractères sur des paramètres précédemment réglés et diviser des chaînes de caractères par des caractères de séparation. Il permet également des chaînes de caractères avec la classe StringBuilder. Aussi, il permet de traiter des chaînes de caractères en utilisant expressions régulières (regex).

Les chaînes de caractères

En pratique, nous arrivons souvent au traitement de processus texte : lecture de fichiers texte, recherche de mots-clefs et remplacement de ceux-ci dans un paragraphe, validation des données d'entrée de l'utilisateur,... en utilisant le langage de programmation C#. Mais qu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères est une séquence de caractères ou un tableau de caractères entreposés dans une certaine adresse en mémoire. Pour entreposer une séquence de caractère, il utilise un type primitif n'offrant la possibilité qu'un seul caractère, soit le type de données char. Ainsi, lorsqu'il est nécessaire de traiter plus d'un caractère, des chaînes de caractères nous viennent en aide.

Dans le cadre d'application .NET, chaque caractère a un numéro de série de la table Unicode. Le standard Unicode est établi à la fin des années 1980 et au début des années 1990 afin d'entreposer différents types de données texte. Son prédécesseur ASCII est capable d'enregistrer seulement 128 ou 256 caractères (norme ASCII respective avec table 7 bits ou 8 bits). Malheureusement, cela ne répond souvent pas aux besoins des utilisateurs - car nous pouvons contenir 128 caractères uniquement des chiffres, des lettres latines majuscules et minuscules et certains caractères individuels spécifiques. Lorsque vous devez travailler avec du texte en cyrillique ou dans une autre langue spécifique (par exemple chinois ou arabe), 128 ou 256 caractères sont extrêmement insuffisants. Voici pourquoi .NET utilise une table de codes 16 bits pour les caractères. Grâce à notre connaissance des systèmes numériques et de la représentation des informations dans les ordinateurs, nous pouvons calculer que la table de codes entrepose 2^16 = 65 536 caractères. Certains caractères sont encodés d'une manière spécifique, il est donc possible d'utiliser deux caractères de la table Unicode pour créer un nouveau caractère - les signes résultants dépassent 100 000.

La classe System.String

La classe System.String nous permet de gérer des chaînes de caractères en C#. Pour déclarer les chaînes, nous continuerons à utiliser le mots clef string, étant un alias en C# de la classe System.String du cadre d'application .NET. Le travail avec la chaîne de caractères nous facilite dans la manipulation du contenu du texte : construction de textes, recherche de texte et bien d'autres opérations. Exemple de déclaration d'une chaîne de caractères :

string machaine = "Bonjour Gladir.com en C#";

Nous venons de déclarer la variable machaine de type string dont le contenu est la phrase textuelle est «Bonjour Gladir.com en C#». La représentation du contenu dans la chaîne de caractères ressemble de près à ceci :

La représentation interne de la classe est assez simple - un tableau de caractères. Nous pouvons éviter l'utilisation de la classe en déclarant une variable de type char[] et en remplissant les éléments du tableau caractère par caractère. Cependant, il y a aussi quelques inconvénients : le remplissage du tableau se fait caractère par caractère, pas en même temps, nous devons connaître la longueur du texte afin de savoir s'il rentrera dans l'espace déjà alloué pour le tableau et le traitement du texte est manuel.

La classe String : la solution universelle ?

L'utilisation de System.String n'est pas la solution idéale et universelle - il est parfois approprié d'utiliser différentes structures de caractères. En C#, nous avons d'autres classes pour le traitement de texte. La chaîne de caractères type est plus spéciale que les autres types de données. C'est une classe et en tant que telle, elle est conforme aux principes de la programmation orientée objet. Ses valeurs sont entreposées dans la mémoire dynamique (mémoire de tas géré), et les variables de type de données string gardent une référence à un objet dans la mémoire de tas.

Les chaînes de caractères sont immuables

La classe String a une caractéristique importante - les séquences de caractères entreposées dans une variable de la classe ne changent jamais (immuables). Après avoir été assignée une fois, le contenu de la variable ne change pas directement - si nous essayons de changer la valeur, elle sera enregistrée dans un nouvel emplacement dans la mémoire dynamique et la variable pointera vers elle.

Chaînes et tableaux de caractères

Les chaînes de caractères sont très similaires aux tableaux char (char[]), mais contrairement à eux, elles ne peuvent pas être modifiées. Comme les tableaux, ils ont des propriétés telles que Length, renvoyant la longueur de la chaîne de caractères et permet l'accès par index. L'indexation, telle qu'elle est utilisée dans les tableaux, prend des indices de 0 à Length-1. L'accès au caractère d'une certaine position dans une chaîne de caractères se fait avec l'opérateur [] (indexeur), mais il n'est autorisé qu'à lire les caractères (et non à y écrire) :

string chaine = "gladir";
char caractere = str[1]; // caractere == 'b'
chaine[1] = 'a'; // Erreur de compilation !
caractere = chaine[50];

Échappement des chaînes de caractères

Si nous voulons utiliser des guillemets dans le contenu de la chaîne de caractères, nous devons mettre une barre oblique devant eux pour identifier que nous considérons le caractère guillemets lui-même et ne pas utiliser les guillemets pour terminer la chaîne de caractères :

string guillemet = "C'est un test entre \"guillemet\" pour C#";

Les doubles guillemets de l'exemple font partie du texte. Ils sont ajoutés dans la variable en les plaçant après la barre oblique inverse du caractère d'échappement (\). De cette façon, le compilateur reconnaît que les doubles guillemets ne sont pas utilisés pour démarrer ou terminer une chaîne de caractères, mais font partie des données. L'affichage de caractères spéciaux dans le code source est appelé échappement.



PARTAGER CETTE PAGE SUR
Dernière mise à jour : Mardi, le 17 novembre 2020