2015-04-21 8 views

risposta

4

La ragione è in strcat's documentation:

Per gli ingressi array di caratteri, strcat rimuove trascinamento ASCII spazio bianco caratteri: spazio, tabulazione, tabulazione verticale, fine riga, ritorno del carrello, e avanzamento modulo. Per preservare gli spazi finali quando si concatenano gli array di caratteri , utilizzare la concatenazione di array orizzontale, [s1, s2, ..., sN].

Per gli input di matrice cellulare, strcat non rimuove lo spazio bianco finale.

Quindi: o stringhe di celle utilizzo (produrrà una cella contenente una stringa)

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

o semplice, la concatenazione staffa-based (produrrà una stringa):

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

o usare 'sprintf ('% s% s', str1, str2)', che è molto potente e molto più veloce! :) (E sì un po 'più difficile da leggere ....) – matlabgui

0

i Non sono del tutto sicuro del motivo per cui ciò accade a parte ciò che è menzionato nella risposta precedente sulla documentazione, ma il codice seguente dovrebbe risolvere il problema.

%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)); 
Problemi correlati