Exercice - Utiliser les méthodes d’assistance IndexOf() et Substring() de chaîne
- 25 minutes
Dans cet exercice, vous utilisez la IndexOf() méthode pour localiser la position d’une ou plusieurs chaînes de caractères à l’intérieur d’une chaîne plus grande. Vous utilisez la Substring() méthode pour renvoyer la partie de la chaîne plus grande qui suit les positions de caractères que vous spécifiez.
Vous utiliserez également une version surchargée de la Substring() méthode pour définir la longueur des caractères à retourner après une position spécifiée dans une chaîne.
Préparer votre environnement de programmation
Ce module comprend des activités pratiques qui vous guident tout au long du processus de création et d’exécution du code de démonstration. Nous vous encourageons à effectuer ces activités à l’aide de Visual Studio Code comme environnement de développement. L’utilisation de Visual Studio Code pour ces activités vous permet de vous familiariser avec l’écriture et l’exécution de code dans un environnement de développement utilisé par des professionnels du monde entier.
Remarque
Si vous avez suivi d’autres modules Microsoft Learn dans cette série C#, vous avez peut-être déjà créé un dossier de projet pour les exemples de code. Le cas échéant, vous pouvez ignorer la série d’étapes suivante et supprimer le code dans le fichier Project.cs qui a été utilisé dans un exercice précédent.
Ouvrez Visual Studio Code.
Vous pouvez utiliser le menu Démarrer de Windows (ou une ressource équivalente pour un autre système d’exploitation) pour ouvrir Visual Studio Code.
Dans le menu Fichier Visual Studio Code, sélectionnez Ouvrir le dossier.
Dans la boîte de dialogue Ouvrir le dossier , accédez au dossier Windows Desktop.
Si vous avez un autre emplacement de dossier où vous conservez des projets de code, vous pouvez utiliser cet emplacement de dossier à la place. Pour cette formation, l’important est d’avoir un emplacement facile à localiser et à mémoriser.
Dans la boîte de dialogue Ouvrir le dossier , sélectionnez Sélectionner un dossier.
Si vous voyez une boîte de dialogue de sécurité vous demandant si vous approuvez les auteurs, sélectionnez Oui.
Dans le menu Terminal Visual Studio Code, sélectionnez Nouveau terminal.
Notez qu’une invite de commandes dans le panneau Terminal affiche le chemin du dossier actif. Par exemple:
C:\Users\someuser\Desktop>À l’invite de commandes terminal, pour créer une application console dans un dossier spécifié, tapez dotnet new console -o ./CsharpProjects/TestProjects , puis appuyez sur Entrée.
Cette commande CLI .NET utilise un modèle de programme .NET pour créer un projet d’application console C# à l’emplacement du dossier spécifié. La commande crée les dossiers CsharpProjects et TestProject pour vous, et utilise TestProject comme nom du fichier
.csproj.Dans le panneau EXPLORER, développez le dossier CsharpProjects .
Vous devriez voir le dossier TestProject et deux fichiers, un fichier programme C# nommé Program.cs et un fichier projet C# nommé TestProject.csproj.
Dans le panneau EXPLORATEUR, pour afficher votre fichier de code dans le panneau Éditeur, sélectionnez Program.cs.
Supprimez les lignes de code existantes.
Au cours de ce module, vous utilisez ce projet de console C# pour créer, générer et exécuter des exemples de code.
Fermez le panneau du Terminal.
Écrire du code pour rechercher des paires parenthèses incorporées dans une chaîne
Vérifiez que Visual Studio Code est ouvert et que Program.cs est affiché dans le panneau d’édition.
Remarque
Program.cs doit être vide. Si ce n’est pas le cas, sélectionnez toutes les lignes de code et supprimez-les.
Tapez le code suivant dans l’Éditeur Visual Studio Code :
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); Console.WriteLine(openingPosition); Console.WriteLine(closingPosition);Dans le menu Fichier Visual Studio Code, sélectionnez Enregistrer.
Le fichier Program.cs doit être enregistré avant de générer ou d’exécuter le code.
Dans le panneau EXPLORATEUR, pour ouvrir un terminal à l’emplacement de votre dossier TestProject, cliquez avec le bouton droit sur TestProject, puis sélectionnez Ouvrir dans le terminal intégré.
Un panneau Terminal doit s’ouvrir et doit inclure une invite de commandes indiquant que le Terminal est ouvert à l’emplacement de votre dossier TestProject.
À l’invite de commandes terminal, pour exécuter votre code, tapez dotnet run , puis appuyez sur Entrée.
Remarque
Si vous voyez le message « Impossible de trouver un projet à exécuter », vérifiez que l’invite de commandes du Terminal affiche l’emplacement attendu du dossier TestProject. Par exemple :
C:\Users\someuser\Desktop\csharpprojects\TestProject>La sortie suivante doit s’afficher :
13 36Dans ce cas, l’index du
(caractère est 13. N’oubliez pas que ces valeurs sont basées sur zéro. Il s’agit donc du 14ème caractère dans la chaîne. L’index du)caractère est36.Maintenant que vous avez les deux index, vous pouvez les utiliser comme limites pour récupérer la valeur entre eux.
Ajouter du code pour récupérer la valeur entre parenthèses
Mettez à jour votre code dans l’Éditeur Visual Studio Code comme suit :
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); // Console.WriteLine(openingPosition); // Console.WriteLine(closingPosition); int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour exécuter votre code. La sortie suivante doit s’afficher :
(inside the parenthesesLa
Substring()méthode a besoin de la position de départ et du nombre de caractères, ou de longueur, à récupérer. Par conséquent, vous calculez la longueur dans une variable temporaire appeléelength, et passez-la avec laopeningPositionvaleur pour récupérer la chaîne à l’intérieur de la parenthèse.Le résultat est proche, mais la sortie inclut la parenthèse ouvrante. Dans cet exercice, l’inclusion de la parenthèse n’est pas souhaitée. Pour supprimer la parenthèse de la sortie, vous devez mettre à jour le code pour ignorer l’index de la parenthèse elle-même.
Modifier la position de départ de la sous-chaîne
Mettez à jour votre code dans l’Éditeur Visual Studio Code comme suit :
string message = "Find what is (inside the parentheses)"; int openingPosition = message.IndexOf('('); int closingPosition = message.IndexOf(')'); openingPosition += 1; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Enregistrez votre fichier de code, puis utilisez Visual Studio Code pour exécuter votre code. La sortie suivante doit s’afficher :
inside the parenthesesPrenez un moment pour passer en revue le code précédent et la ligne
openingPosition += 1;.En augmentant la
openingPositionde1, nous éliminons la parenthèse ouvrante.La raison pour laquelle vous utilisez la valeur
1est parce que c’est la longueur du caractère. Si vous tentez de localiser une valeur à partir d’une chaîne plus longue, par exemple,<div>ou---, vous devez utiliser la longueur de cette chaîne à la place.Mettez à jour votre code dans l’Éditeur Visual Studio Code comme suit :
string message = "What is the value <span>between the tags</span>?"; int openingPosition = message.IndexOf("<span>"); int closingPosition = message.IndexOf("</span>"); openingPosition += 6; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Prenez un moment pour passer en revue le code précédent et la ligne
openingPosition += 6;.L’extrait de code précédent montre comment trouver la valeur à l’intérieur d’une balise d’ouverture et de fermeture
<span>.Dans ce cas, vous ajoutez
6auopeningPositioncomme décalage pour calculer la longueur de la sous-chaîne.
Éviter les valeurs magiques
Les chaînes codées en dur comme "<span>" dans la liste de codes précédente sont appelées « chaînes magiques » et valeurs numériques codées en dur comme 6 « nombres magiques ». Ces valeurs « Magic » ne sont pas souhaitables pour de nombreuses raisons et vous devez essayer de les éviter si possible.
Passez en revue le code précédent pour déterminer comment le code peut s’interrompre si vous avez codé en dur la chaîne
"<span>"plusieurs fois dans votre code, mais mal orthographié une instance comme"<sapn>".Le compilateur n’intercepte
"<sapn>"pas au moment de la compilation, car la valeur se trouve dans une chaîne. L’orthographe incorrecte entraîne des problèmes au moment de l’exécution et, en fonction de la complexité de votre code, il peut être difficile de suivre.En outre, si vous modifiez la chaîne
"<span>"en la plus courte"<div>", mais oubliez de changer le nombre6en5, votre code produit des résultats indésirables.Mettez à jour votre code dans l’Éditeur Visual Studio Code comme suit :
string message = "What is the value <span>between the tags</span>?"; const string openSpan = "<span>"; const string closeSpan = "</span>"; int openingPosition = message.IndexOf(openSpan); int closingPosition = message.IndexOf(closeSpan); openingPosition += openSpan.Length; int length = closingPosition - openingPosition; Console.WriteLine(message.Substring(openingPosition, length));Prenez une minute pour examiner le code mis à jour et l’utilisation du mot clé
consttel qu’il est utilisé dansconst string openSpan = "<span>";.Le code utilise une constante avec le
constmot clé. Une constante vous permet de définir et d’initialiser une variable dont la valeur ne peut jamais être modifiée. Vous utiliseriez ensuite cette constante dans le reste du code chaque fois que vous en aviez besoin. Cela garantit que la valeur n’est définie qu’une seule fois et que l’orthographe incorrecte de laconstvariable est interceptée par le compilateur.La liste de codes précédente est un moyen plus sûr d’écrire le même code que celui que vous avez examiné dans la section précédente. À présent, si la valeur de
openSpanchange en<div>, la ligne de code qui utilise la propriétéLengthcontinue d’être valide.
Récapitulatif
Cette unité a couvert beaucoup de sujets. Voici les éléments les plus importants à mémoriser :
-
IndexOf()vous donne la première position d’un caractère ou d’une chaîne à l’intérieur d’une autre chaîne. -
IndexOf()retourne-1si elle ne trouve pas de correspondance. -
Substring()retourne uniquement la partie spécifiée d’une chaîne, à l’aide d’une position de départ et d’une longueur facultative. - Il existe souvent plusieurs façons de résoudre un problème. Vous avez utilisé deux techniques distinctes pour rechercher toutes les instances d’un caractère ou d’une chaîne donné.
- Évitez les valeurs magiques codées en dur. Définissez plutôt une
constvariable. La valeur d’une variable constante ne peut pas être modifiée après l’initialisation.
Vérifier vos connaissances
Commentaires
Est-ce que cette page vous a été utile?
Non
Avez-vous besoin d’aide à ce sujet?
Voulez-vous essayer d’utiliser Ask Learn pour clarifier ou vous guider à travers ce sujet ?