HOWTO · MATLAB

Concaténer une chaîne dans MATLAB

On peut concaténer des chaînes en utilisant la fonction `strcat()` dans MATLAB.

Sur cette page

Utilisez strcat() pour combiner des valeurs textuelles dans MATLAB. La fonction traite aussi les tableaux élément par élément lorsqu’ils sont compatibles, ce qui permet de créer plusieurs valeurs étiquetées en un seul appel. Choisissez soigneusement le type des données : les tableaux de chaînes MATLAB et les vecteurs de caractères n’ont pas le même comportement avec + ni avec les espaces.

Concaténer du texte avec strcat()

Appelez strcat(value1, value2, ...) pour joindre le texte de gauche à droite. Pour les vecteurs de caractères, strcat() supprime les espaces finaux de chaque entrée avant de les joindre. Cela peut être utile si ces espaces proviennent d’un remplissage involontaire, mais ils ne constituent pas un moyen fiable de séparer les mots. Ajoutez explicitement un séparateur lorsque c’est nécessaire.

Exécutez cet exemple :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

hello = 'Hello, ';
name = 'Alice';
result = strcat(hello, name, '!');
fprintf('%s\n', result);
Hello,Alice!

Les entrées sont des vecteurs de caractères, et le résultat est lui aussi un vecteur de caractères. Pour les scalaires chaîne de MATLAB, utilisez des guillemets doubles, comme dans strcat("Hello, ", "Alice!") ; cela renvoie un scalaire chaîne. Lorsque vous adaptez les exemples, distinguez bien les formes chaîne et vecteur de caractères, notamment si vous combinez des valeurs provenant de différentes sources.

Concaténer des tableaux avec strcat()

Lorsque les tableaux d’entrée ont des dimensions compatibles, strcat() combine leurs éléments correspondants et renvoie un tableau de forme correspondante. Une valeur textuelle scalaire peut être combinée avec chaque élément d’un tableau. Par exemple, avec un tableau de chaînes names = ["Alice", "Bob", "Charlie"], strcat("Hello, ", names) produit un message d’accueil pour chaque nom. MATLAB prend également en charge les tableaux de cellules contenant des vecteurs de caractères, comme names = {'Alice', 'Bob', 'Charlie'} ; conservez cette syntaxe si le code environnant attend un tableau de cellules. Les dimensions des tableaux doivent être compatibles avec l’opération. Si les entrées ne peuvent pas être associées selon les règles applicables aux tableaux de MATLAB, ajustez leurs dimensions ou combinez plutôt des valeurs scalaires. Un tableau de cellules de vecteurs de caractères et un tableau de chaînes sont des types distincts : conservez la représentation attendue par la suite du programme au lieu de supposer qu’ils sont interchangeables.

Ajouter des séparateurs et gérer les espaces

strcat() n’ajoute ni ponctuation ni séparateur entre les mots. Avec des vecteurs de caractères, la fonction supprime aussi les espaces finaux de chaque entrée ; un argument séparé ' ' est donc supprimé et ne crée pas d’espace visible. Pour insérer un espace ordinaire entre des vecteurs de caractères, placez le séparateur dans une chaîne de format avec sprintf() :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

first = 'Ada';
last = 'Lovelace';
fullName = sprintf('%s %s', first, last);
fprintf('%s\n', fullName);

Cet exemple affiche les deux noms avec un espace entre eux. Pour les scalaires chaîne de MATLAB, strcat("Ada", " ", "Lovelace") conserve le séparateur explicite. Si vous voulez insérer un séparateur entre chaque élément d’un tableau, join() est conçue pour cela et accepte un délimiteur ; strcat() combine plutôt les éléments correspondants. Les espaces initiaux ne se comportent pas comme les espaces finaux : si la mise en forme reste inattendue, vérifiez les valeurs d’entrée réelles.

Choisir entre strcat() et +

Utilisez strcat() pour appliquer son comportement de concaténation textuelle aux vecteurs de caractères ou aux tableaux de chaînes. L’opérateur + concatène les tableaux de chaînes MATLAB ; il peut donc être concis lorsque les deux opérandes sont des chaînes. Avec des vecteurs de caractères, + effectue une addition numérique des codes des caractères ; il ne concatène pas le texte affiché. Convertissez les vecteurs de caractères en chaînes avant d’utiliser +, ou utilisez strcat() pour les concaténer.

Par exemple, "Good " + "morning" combine deux scalaires chaîne pour produire "Good morning". En revanche, 'A' + 'B' additionne les codes des caractères élément par élément ; comme chacun des vecteurs contient un élément, leurs dimensions sont compatibles et le résultat numérique est 131 (65 + 66). Ne déduisez pas le résultat des seuls guillemets si les valeurs ont pu être converties plus tôt dans le programme : vérifiez si chaque variable est un tableau de chaînes, un vecteur de caractères ou un tableau de cellules. Cette distinction entre les types est le principal repère pour choisir l’opérateur et prévoir le résultat.