How to insert space between strings while doing strcat ?

for eg:
a='hello'; b='world'; strcat(a,b);
strcat(a,b) gives 'helloworld' But I need it as 'hello world' How can I do that ?

 Accepted Answer

Use the square bracket [] concatenation operator, and including a space variable is the easiest way:
a='hello';
b='world';
s = ' ';
Result = [a,s,b]
Result =
hello world

4 Comments

Thank you Star Strider for giving an explanation that not only can be understood by the beginner user of MATLAB, but also one that is easily implemented across a variety of coding needs. I was having trouble creating a function handle when receiving a user entered equation in GUI (received through the get command) and then using that function handle to find a definite integral and other calculated values (i.e. Riemann sums). I used your answer to create an anonymous function and then used str2func to get a function handle that I could use.
Brilliant answer! Thank you!!!
As always, my pleasure!
I very much appreciate your compliment!
Thank you Star, you know, the most simple things are always underestimated, but actually the most difficult to found.
Best!

Sign in to comment.

More Answers (4)

I like to use the ASCII space character for this situation, code "32". for the OP: strcat(a,32,b) Extension: I would be inclined to also include a comma, code "44": strcat(a,44,32,b)
I look up the characters at: http://www.asciitable.com/
There is a trick to strcat. Notice from the documentation,
"For character array inputs, strcat removes trailing ASCII white-space characters: space, tab, vertical tab, newline, carriage return, and form feed. For cell and string array inputs, strcat does not remove trailing white space."
This means that if you have
strcat(a, ' ', b)
then the "trailing" space of the ' ' input will be removed, which will have the effect of running the entries together. The trick is to use
strcat(a, {' '}, b)

4 Comments

A note to say that if you are using strcat on multiple line cell arrays then the {' '} needs replicated to the same size of cell array (not character array) - e.g. cellstr(repmat({' '},size(a))) if a is the cell array.
a = {'hello';'bye'};
b = {'dolly';'louis'};
>> strcat(a, {' '}, b)
ans =
2×1 cell array
{'hello dolly'}
{'bye louis' }
No need to replicate the {' '}
Hello everybody,
all your solutions are brilliant, and lead to the same result.
Thanks for your help and time!

Sign in to comment.

The most efficient approach is to use sprintf:
>> a = 'hello';
>> b = 'world!';
>> sprintf('%s %s',a,b)
hello world!
strcat(string1, " "); strcat(string1, string2);

2 Comments

I get the following error on the " character
Error: The input character is not valid in MATLAB
statements or expressions.
" is only valid in MATLAB from R2017a onwards. string() objects started existing in R2016b, but the input syntax of " was not enabled until R2017a.

Sign in to comment.

Categories

Tags

Asked:

on 31 Oct 2015

Commented:

on 31 Jan 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!