String Delimiting and Array Storage

Hi, could someone tell me the best way to delimit a long single row array of characters based on a reoccurring character in the array? In this case I am using "/" to separate strings.
The biggest challenge I am having is storing delimited strings into an array because the string length is not constant.
I can have something like abc/adeht/ahdiglkjsad/asd/ds but I cannot create the following array
[adeht
ahdiglkjsad
asd
ds ]
because the strings are all different lengths and the dimensions do not match.
Can anyone recommend a solution? I need to be able to reference and analyze each string on a per character basis after delimiting. That's why I chose to try to do an array originally, however, this is not working out.
Thanks, Nikolay

 Akzeptierte Antwort

Jan
Jan am 1 Okt. 2012

0 Stimmen

You can use a cell string:
str = 'abc/adeht/ahdiglkjsad/asd/ds';
cstr = regexp(str, '/', 'split');

8 Kommentare

Matt Fig
Matt Fig am 1 Okt. 2012
Bearbeitet: Matt Fig am 1 Okt. 2012
To get the results in to one array, as you show in your question:
char(cstr)
But if you are analyzing each sub-string separately, a cell array is fine and perhaps preferred for storage.
Jan
Jan am 1 Okt. 2012
Bearbeitet: Jan am 1 Okt. 2012
After char(cstr) you get a CHAR matrix padded with spaces. There is no way to avoid the padding, because a matrix must be rectangular amd all rows must have the same number of elements.
Matt Fig
Matt Fig am 1 Okt. 2012
Yes, I should not have left that out.
Nikolay Rodionov
Nikolay Rodionov am 1 Okt. 2012
Thanks, this works great but in using the char() function I am encountering the same difficulty with padding as I was before. Is there anyway to get the length of a string in, lets say, array = char(cstr), array(1,:) that is not padding? If I use a simple length function, then it tells me that the row length is 11 characters, even though there are only 3 letters .
Thanks again!
Matt Fig
Matt Fig am 1 Okt. 2012
Bearbeitet: Matt Fig am 1 Okt. 2012
Why not just work with cstr instead??
length(cstr{1}) % Find the length of the first string
cellfun('length',cstr) % Or all lengths at once.
Nikolay Rodionov
Nikolay Rodionov am 1 Okt. 2012
I was wondering because I am simply more familiar with arrays. I'll try working with cells though. Is there a way for me to reference portions of a cell's contents, such as characters 1:3?
This is all part of a nucleotide sequence analysis script, I need to be able to parse the delimited sequences and store them into external cells or arrays.
C = {'asdlfdjsadf','awwretjrdf'};
C{2}(4:5)
Nikolay Rodionov
Nikolay Rodionov am 1 Okt. 2012
Thank you so much!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

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

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by