Vous pouvez protéger arrière espaces dans strcat() ou similaire fonctionne en le mettant dans une cellule.
str = strcat({'red '}, {'yellow '}, {'white '})
str = str{1}
Pas très utile dans cet exemple de base. Mais si vous finissez par faire des opérations "vectorisées" sur les cordes, c'est pratique. La concaténation régulière de tableau ne fait pas la concaténation 1-à-plusieurs que strcat fait. Coller 'my' dans une cellule même s'il s'agit d'une seule chaîne préservera les espaces. Notez que vous devez utiliser la forme {} au lieu d'appeler cellstr(), qui supprimera elle-même les espaces de fin. Tout cela est probablement dû au fait que Matlab a deux formes de représentation des listes de chaînes: en tant que tableau de cellules, où tout espace est significatif, et en tant que tableau de caractères bidimensionnel, chaque ligne étant traitée comme une chaîne, et les espaces de fin ignorés. La forme de cellule ressemble le plus à des chaînes en Java et C; la forme de caractère 2-D peut être plus efficace en mémoire si vous avez plusieurs chaînes de longueur similaire. Les fonctions de manipulation de chaînes de Matlab sont polymorphes sur les deux représentations et présentent parfois des différences de ce type. Un caractère littéral comme 'foo' est un cas dégénéré à une corde de la forme de caractère 2D, et les fonctions de Matlab le traitent comme tel.
@ # $ @! # $ @! une autre incohérence entre Matlab et C.> :( –
Solution de contournement rapide: 'cstrcat (" he "," l "," lo ")', préserve les espaces Source: http://stackoverflow.com/a/14025999/ 445131 –
Il y a tellement de décisions de conception idiotes dans Matlab, mais je ne m'attendais pas à quelque chose d'aussi simple que cela soit aussi un problème! – houbysoft