strcat including space (i.e, ' ')

조회 수: 994 (최근 30일)
R P
R P 2011년 6월 11일
답변: Jy·Li 2023년 5월 25일
I have to concatenate words, including spaces
Ex. a='word1'; b='word2';c=strcat(a,' ',b);
I need 'word1 word2', however, the value on c is 'word1word2'
Can you help me?

채택된 답변

Walter Roberson
Walter Roberson 2011년 6월 11일
편집: MathWorks Support Team 2018년 11월 8일
To include spaces when concatenating character vectors, use square brackets.
a = 'word1';
b = 'word2';
c = [a ' ' b]
The “ strcat ” function ignores trailing whitespace characters in character vectors. However, “strcat” preserves them in cell arrays of character vectors or string arrays.
a = {'word1'};
b = {'word2'};
c = strcat(a,{' '},b)
You also can use the “plus” operator to combine strings. Starting in R2017a, use double quotes to create strings. For more information on strings, see the “ string ” data type.
a = "word1";
b = "word2";
c = a + " " + b
  댓글 수: 6
Captain Karnage
Captain Karnage 2022년 8월 26일
편집: Voss 2022년 8월 26일
FYI for anyone else reading, I had a cell array of strings and I wanted to concatenate the same string (with a space in it) to each of the strings in the cell array (no spaces in these strings). The square bracket (first) method of course doesn't work, neither does the "plus" operator (third/last) method for that. However, the "strcat" using a single cell array with a space (2nd/middle above) method does work.
To specifically show an example:
a = 'Addme';
b = { 'to', 'each', 'one', 'of', 'these', 'words', 'with', 'a', 'space'};
c = strcat(a,{' '},b)
c = 1×9 cell array
{'Addme to'} {'Addme each'} {'Addme one'} {'Addme of'} {'Addme these'} {'Addme words'} {'Addme with'} {'Addme a'} {'Addme space'}
Walter Roberson
Walter Roberson 2022년 8월 26일
편집: Walter Roberson 2022년 8월 26일
a = 'Addme';
b = { 'to', 'each', 'one', 'of', 'these', 'words', 'with', 'a', 'space'};
strjoin([a, b])
ans = 'Addme to each one of these words with a space'
a + " " + b
ans = 1×9 string array
"Addme to" "Addme each" "Addme one" "Addme of" "Addme these" "Addme words" "Addme with" "Addme a" "Addme space"

댓글을 달려면 로그인하십시오.

추가 답변 (4개)

Paulo Silva
Paulo Silva 2011년 6월 11일
c=[a ' ' b]
strcat ignores trailing ASCII white space characters and omits all such characters from the output. White space characters in ASCII are space, newline, carriage return, tab, vertical tab, or form-feed characters, all of which return a true response from the MATLAB isspace function. Use the concatenation syntax [s1 s2 s3 ...] to preserve trailing spaces. strcat does not ignore inputs that are cell arrays of strings.
  댓글 수: 2
Daniel Foose
Daniel Foose 2018년 2월 23일
This is better than the accepted answer because it keeps the type the same. The accepted answer returns a cell with a string in it (which is different from a string). This answer returns a string.
Walter Roberson
Walter Roberson 2018년 2월 23일
The accepted answer returns a cell with a character vector in it. Strings did not exist in R2011a. If strings were being used then you would use a different approach:
>> a = "word1"; b = "word2"; a + " " + b
ans =
"word1 word2"
This requires R2017a or later. For R2016b,
>> a = string('word1'); b = string('word2'); a + ' ' + b
and before R2016b strings did not exist.

댓글을 달려면 로그인하십시오.


Jy·Li
Jy·Li 2023년 5월 25일
c=strcat(a,32,b); % the unicode value of ' ' is 32

Usman Nawaz
Usman Nawaz 2020년 9월 6일
use double quotes instead of single quotes, worked for me.
  댓글 수: 1
Walter Roberson
Walter Roberson 2020년 9월 6일
That can be useful, but the output would be a string() object instead of a character vector. string() objects can be useful, but they need slightly different handling than character vectors.
string() objects became available in R2016b; using double-quotes to indicate string objects became available in R2017a.

댓글을 달려면 로그인하십시오.


R P
R P 2011년 6월 11일
Thank you, Walter
  댓글 수: 3
Walter Roberson
Walter Roberson 2011년 6월 11일
>> strcat({'word1'},{' '},{'word2'})
ans =
'word1 word2'
You can dereference this or cell2mat it if you want the string itself as output.
Jan
Jan 2011년 6월 11일
@Walter: CELL2MAT is not efficient here. S{1} is nicer.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by