필터 지우기
필터 지우기

Getting index from strsplit or strfind in a null (00) terminated string

조회 수: 1 (최근 30일)
Simon
Simon 2016년 4월 10일
편집: per isakson 2016년 4월 11일
I have a long string with chunks of data. Each data chunk is separated/terminated by null (hex 00). Right now I use strsplit(data, '\0') to split the string, which works fine, but it returns a cell array with data, however, I rather need the functionality of strfind and get a list of indices for where the string is split.
Example of data:
data_chunk "null/0x00" data_chunk "null/0x00" data_chunk "null/0x00"
I know the first chunk is obviously at index 0, but I would also like to get the indices of the remaining chunks.
Is it possible to use strfind and search for null?
  댓글 수: 2
Azzi Abdelmalek
Azzi Abdelmalek 2016년 4월 10일
Post clearly your data, for example:
str='null/0x00'
Then explain what is the expected result
result=?
Simon
Simon 2016년 4월 10일
For reference, an example of the string could be
str = 'engine_thrust combustion yaw pitch roll'
where the whitespaces are char null i.e. hex value 0x00.

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

채택된 답변

per isakson
per isakson 2016년 4월 10일
편집: per isakson 2016년 4월 10일
What am I missing?
>> str = [char(0),'abc',char(0),'123',char(0)];
>> find( str==char(0) )
ans =
1 5 9
>> strfind( str, char(0) )
ans =
1 5 9
>> strsplit( str, '\0')
ans =
'' 'abc' '123' ''
  댓글 수: 4
Simon
Simon 2016년 4월 11일
Great, nice to know, might as well keep it as clean as possible.
per isakson
per isakson 2016년 4월 11일
편집: per isakson 2016년 4월 11일
IMO: Explicit casting makes the code easier to read (and often faster).
>> ['B'+1, 67]
ans =
67 67
>> ['B', 67]
ans =
BC
>> ['B'+1, 'C']
ans =
CC

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

추가 답변 (0개)

카테고리

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