How to join the subelements of a cell?

조회 수: 1 (최근 30일)
GEORGIOS BEKAS
GEORGIOS BEKAS 2018년 1월 26일
댓글: Domanic 2018년 1월 26일
I am trying to express all sentences in one cell with string subelements.
s='I am George. John is there? Ana is around! Are you mad?'
[y,matches] = strsplit(s,{'.','?','!'})
for i = 1:length(matches)
y{i}=[y{i},matches{i}]
end
y=y(~cellfun('isempty',y))
  댓글 수: 1
Matt J
Matt J 2018년 1월 26일
Don't think you finished your question (because I'm not sure what it is). If you're trying to rejoin all the sub-strings in y, see my answer below.

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

답변 (2개)

Matt J
Matt J 2018년 1월 26일
편집: Matt J 2018년 1월 26일
  댓글 수: 6
GEORGIOS BEKAS
GEORGIOS BEKAS 2018년 1월 26일
seperate strings into one cell subelement.
Steven Lord
Steven Lord 2018년 1월 26일
This is what I receive when I run the code you posted followed by Matt's suggestion.
s = 'I am George. John is there? Ana is around! Are you mad?'
[y,matches] = strsplit(s,{'.','?','!'})
for i = 1:length(matches)
y{i}=[y{i},matches{i}]
end
y=y(~cellfun('isempty',y))
s2 = [y{:}]
whos s2
s2 =
'I am George. John is there? Ana is around! Are you mad?'
Name Size Bytes Class Attributes
s2 1x55 110 char
What exactly do you need/want/expect s2 to be for this example? Be specific about the type and size you expect s2 to be and the contents you expect s2 to contain.

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


Domanic
Domanic 2018년 1월 26일
편집: Domanic 2018년 1월 26일
To join elements of the cell array, y, you can use:
y = cell2mat(y);
or
y = {cell2mat(y)};
for a cell array.
To more generally achieve what you're trying to do, you can use regular expressions:
expression = '(?<=\W)\s'; % Expression to find white space following punctuation
strsplit(s,expression,'delimitertype','regularexpression'); % split string around result of regexp
  댓글 수: 2
GEORGIOS BEKAS
GEORGIOS BEKAS 2018년 1월 26일
the problem is that the strings are not separate. C[1,1] = 'I am George.' 'John is there?' 'Ana is around!' 'Are you mad?'
Domanic
Domanic 2018년 1월 26일
How about:
expression = '(?<=\W)\s';
y = strsplit(s,expression,'delimitertype','regularexpression');
y = {cell2struct(y,'substrings')};
where the strings are accessed as:
y{1}.substrings
or
y{1}.substrings(1)
not sure why you'd want this, though.

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

카테고리

Help CenterFile Exchange에서 Whos에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by