2012-04-30 17 views
5

Chciałbym połączyć ciągi. Próbowałem za pomocą strcat:Łączenie ciągów ze spacjami

x = 5; 
m = strcat('is', num2str(x)) 

ale funkcja ta usuwa końcowe białe znaki z każdej struny. Czy istnieje inna funkcja MATLAB do łączenia ciągów, która zachowuje ciągłą białą przestrzeń?

Odpowiedz

12

Można użyć horzcat zamiast strcat:

>> strcat('one ','two') 
ans = 
onetwo 
>> horzcat('one ','two') 
ans = 
one two 

Ewentualnie, jeśli masz zamiar być zastąpienie numerów do strun, to może być lepiej użyć sprintf:

>> x = 5; 
>> sprintf('is %d',x) 
ans = 
is 5 
-2

What spacji czy to nie bierze pod uwagę? Tylko te przestrzenie, o których nie wspomniałeś! Czy miałeś na myśli:

m = strcat(' is ',num2str(x)) 

być może?

Matlab nie będzie zgadywał (a), że potrzebujesz spacji lub (b) gdzie umieścić spacje, które zgaduje.

+0

miejsce, które tam umieścisz, zostanie obcięte, jeśli użyjesz strcat –

2

Wystarczy popatrzeć na ostatnim przykładzie na strcat documentation: spróbuj użyć poziomego tablicy concatination zamiast strcat:

m = ['is ', num2str(x)] 

również rzucić okiem na sprintf uzyskać więcej informacji na temat formatowania String (prowadzący/spacje itp .).

4

Jak o

strcat({' is '},{num2str(5)}) 

który daje

' is 5' 
2

Jak na temat korzystania strjoin?

x = 5; 
m ={'is', num2str(x)}; 
strjoin(m, ' ')