2012-04-30 3 views
5

Я хотел бы объединить строки. Я попытался с помощью strcat:Конкатенация строк с пробелами

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

, но эта функция удаляет конечные пробельные символы из каждой строки. Есть ли еще одна функция MATLAB для выполнения конкатенации строк, которая поддерживает конечное белое пространство?

ответ

12

Вы можете использовать horzcat вместо strcat:

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

В качестве альтернативы, если вы собираетесь быть подставляя числа в строки, это может быть лучше использовать sprintf:

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

Какие пространства это не учитывается? Только те места, которые вы не упомянули! Возможно, вы имели в виду:

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

возможно?

Matlab не собирается догадываться (а) о том, что вы хотите пробелы или (b), где нужно разместить пробелы, которые вы предполагаете.

+0

, что место, которое вы там помещаете, будет обрезано, если вы используете strcat –

2

Посмотрите на последний пример на strcat documentation: попробуйте использовать горизонтальный массив concatination вместо strcat:

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

Кроме того, посмотрите на sprintf для получения дополнительной информации о строке форматирования (ведущий/ведомые пробелы и т.д. .).

4

Как насчет

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

, что дает

' is 5' 
2

Как насчет использования strjoin?

x = 5; 
m ={'is', num2str(x)}; 
strjoin(m, ' ') 
Смежные вопросы