I have a large set of data which is presented as a string, for example:
1;2;3;4;5;6;7;8 etc...
I use:
strsplit(data,';')
and that breaks everything up into individual cells.
However I have found an issue with some data. My logger is 100% reliable so sometimes I get data which looks like:
;;;;;6;7;8 etc...
Using the strsplit command I get:
NaN 6 7 8
What I'd like is
NaN NaN NaN NaN NaN 6 7 8
Any suggestions?

 Akzeptierte Antwort

Geoff Hayes
Geoff Hayes am 4 Jan. 2019
Bearbeitet: Geoff Hayes am 4 Jan. 2019

2 Stimmen

Richard - from strsplit try doing the following
strsplit(data, ';', 'CollapseDelimiters', false)
so that the consecutive empty delimiters are not collapsed into one cell.

Weitere Antworten (2)

madhan ravi
madhan ravi am 4 Jan. 2019
Bearbeitet: madhan ravi am 7 Jan. 2019

1 Stimme

str=';;;;;6;7;8';
expr=';';
C=str2double(regexp(str,expr,'split')) % edited after Jan’s comment
%[~,c]=regexp(str,expr,'match','split');
%Result=cellfun(@str2double,c)
Gives:
Result =
NaN NaN NaN NaN NaN 6 7 8

2 Kommentare

Jan
Jan am 7 Jan. 2019
Bearbeitet: Jan am 7 Jan. 2019
+1. regexp returns the wanted cell string as 1st output when using 'split' without 'match':
C = regexp(str, expr, 'split')
and str2double works with a cellstring directly. So this is simpler and faster:
Result = str2double(regexp(str, expr, 'split'))
madhan ravi
madhan ravi am 7 Jan. 2019
Echt toll Jan! Danke schön , selbsverständlich jetzt..

Melden Sie sich an, um zu kommentieren.

Richard Youden
Richard Youden am 7 Jan. 2019

0 Stimmen

Thanks for the responses, greatly appreciated.
Richard

Kategorien

Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2015b

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by