2015-04-21 4 views

Antwort

4

Der Grund hierfür ist in strcat's documentation:

Für Zeichenfeld-Eingänge, strcat entfernt ASCII Leerraum Zeichen nachlauf: Raum, Tab, vertikaler Tabulator, neue Zeile, Wagenrücklauf und form Feed. Verwenden Sie zum Beibehalten nachstehender Leerzeichen beim Verketten von Zeichen Arrays die horizontale Array-Verkettung [s1, s2, ..., sN].

Bei Zellenfeldeingängen entfernt strcat nicht den nachgestellten Leerraum.

So: entweder Verwendung Zellenketten (eine Zelle erzeugt eine Zeichenfolge enthält)

hi = {'hi'}; 
str = strcat({'Hello World '},hi) 

oder ebene, bügel basierend Verkettung (eine Zeichenfolge erzeugen):

str = ['Hello World ',char(hi)] 
+0

oder verwenden Sie 'sprintf ('% s% s', str1, str2)' das ist sehr mächtig und viel schneller! :) (Und ja ein bisschen schwerer zu lesen ....) – matlabgui

0

i Ich bin mir nicht ganz sicher, warum das passiert, abgesehen von dem, was in der vorherigen Antwort zur Dokumentation erwähnt wurde, aber der folgende Code sollte Ihr Problem beheben.

%create two cells with the strings you wish to concatenate 
A = cell({'Hello World '}); 
B = cell({'hi'}); 

%concatenate the strings to form a single cell with the full string you 
%want. and then optionally convert it to char in order to have the string 
%directly as a variable. 
str = char(strcat(A,B)); 
Verwandte Themen