Chaîne divisée dans Arduino

Ammar Ali 12 octobre 2023
Chaîne divisée dans Arduino

Ce tutoriel discutera de la division d’une chaîne à l’aide de la fonction substring() dans Arduino.

Utilisez la fonction substring() pour diviser une chaîne dans Arduino

Arduino fournit une fonction intégrée substring() pour diviser une chaîne donnée. Nous pouvons diviser une chaîne en utilisant la valeur d’index de début et de fin.

La fonction substring() a deux arguments. Le premier argument est la valeur d’index de départ à partir de laquelle nous voulons démarrer le processus de fractionnement, et le second est la valeur d’index de fin où le processus de fractionnement s’arrêtera.

Syntaxe:

Sub_string = MyString.substring(from, to);

La variable Sub_string contiendra la sortie de la fonction substring(), et la variable MyString contiendra la chaîne originale que nous voulons séparer. La variable from contient l’indice de départ, et la variable to contient l’indice de fin.

Définissons une chaîne et divisons-la à l’aide de la fonction substring() et imprimons-la sur le moniteur série d’Arduino.

Exemple:

String My_S = "hello world";

void setup() { Serial.begin(9600); }
void loop() {
  String sub_S = My_S.substring(0, 5);
  Serial.println(sub_S);
  delay(1000);
}

Production:

hello

Dans le code ci-dessus, la fonction Serial.println() imprime le résultat sur le moniteur série d’Arduino. La division de la chaîne commencera à partir de 0, inclura le caractère d’index 0 et se terminera à l’index 5, à l’exclusion du caractère à l’index 5.

On peut aussi trouver l’index des caractères en utilisant la fonction indexOf() d’Arduino. L’index de la fonction accepte deux arguments.

Le premier argument est obligatoire, représentant le caractère ou la chaîne dont nous voulons trouver l’index. Le deuxième argument est facultatif et représente l’index de départ pour trouver l’index du caractère.

Par défaut, la fonction indexOf() commence à chercher la chaîne depuis le début pour trouver l’index du caractère donné, mais nous pouvons également passer un index comme point de départ en utilisant le deuxième argument de la fonction indexOf().

Syntaxe:

int index = MyString.indexOf(val, from);

La variable index stockera la variable val index, qui contient un caractère ou une chaîne dans le code ci-dessus. La variable from définit l’index de départ utilisé comme point de départ pour trouver l’index du caractère donné.

On utilise la fonction indexOf() lorsque l’on ne connaît pas l’index du caractère à passer dans substring().

Par exemple, si nous voulons diviser la chaîne donnée en utilisant le caractère espace comme index de fin, nous pouvons utiliser la fonction indexOf() pour trouver l’index du caractère espace, puis l’utiliser dans la fonction substring(). pour diviser la chaîne.

La fonction indexOf() renverra -1 si l’index n’est pas trouvé dans la chaîne donnée.

Exemple:

String My_S = "hello world";

void setup() { Serial.begin(9600); }
void loop() {
  int index = My_S.indexOf(' ');
  String sub_S = My_S.substring(0, index);
  Serial.println(index);
  Serial.println(sub_S);
  delay(1000);
}

Production:

5
hello

Dans le code ci-dessus, la variable index contient l’index du caractère espace présent dans la chaîne donnée. Comme vous pouvez le voir, nous avons affiché l’index et le résultat de la séparation des chaînes sur la fenêtre du moniteur série.

Nous pouvons également diviser une chaîne en fonction du nombre de lignes.

Par exemple, si une chaîne contient plusieurs lignes de texte et que nous voulons diviser et obtenir chaque ligne sous la forme d’une chaîne distincte.

Nous pouvons utiliser la fonction indexOf('\n') pour trouver l’index d’une nouvelle ligne et diviser la chaîne donnée en conséquence.

La fonction indexOf() commence à rechercher l’index à partir du début de la chaîne donnée. Cependant, on peut aussi utiliser la fonction lastIndexOf(), qui recherche l’index à partir de la fin d’une chaîne.

Comme deuxième argument, nous pouvons aussi passer l’index de départ à l’intérieur de la fonction lastIndexOf(). Par exemple, divisons une chaîne contenant trois lignes, récupérons la dernière ligne et affichons-la dans la fenêtre du moniteur série.

Exemple:

String My_S = "hello world\nGreetings\nPeople";

void setup() {
  Serial.begin(9600);
  Serial.println(My_S);
}
void loop() {
  int index = My_S.lastIndexOf('\n');
  int length = My_S.length();
  String sub_S = My_S.substring(index, length);
  Serial.println(sub_S);
  delay(100000);
}

Production:

hello world
Greetings
People

People

Nous avons utilisé la fonction lastIndexOf() dans le code ci-dessus car nous voulons uniquement obtenir la dernière ligne de texte présente dans la chaîne donnée. Les trois premières lignes sont la chaîne donnée dans la sortie et la quatrième ligne résulte du fractionnement de la chaîne.

Nous avons utilisé la fonction length() pour obtenir la longueur de la chaîne donnée qui sera utilisée comme valeur d’index de fin dans substring(). Nous avons utilisé la fonction delay() pour ajouter un certain délai dans l’exécution du code car la boucle répétera le processus.

Si nous ne voulons faire que le fractionnement, nous pouvons écrire le code à l’intérieur de la fonction setup(), qui ne s’exécute qu’une seule fois.

Nous pouvons diviser une chaîne en fonction de n’importe quel caractère. Il suffit de trouver son index à l’aide de la fonction indexOf().

Nous pouvons diviser la chaîne en utilisant la fonction substring(). Supposons que nous voulions obtenir toutes les lignes séparément dans une chaîne donnée. Nous devons obtenir une ligne, enregistrer la chaîne restante dans une variable et effectuer à nouveau la même opération en utilisant une boucle jusqu’à ce que toutes les lignes aient été extraites.

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - Arduino String