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

 Risposta accettata

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

8 Commenti

Matt Fig
Matt Fig il 1 Ott 2012
Modificato: Matt Fig il 1 Ott 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 il 1 Ott 2012
Modificato: Jan il 1 Ott 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.
Yes, I should not have left that out.
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 il 1 Ott 2012
Modificato: Matt Fig il 1 Ott 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.
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)
Thank you so much!

Accedi per commentare.

Più risposte (0)

Categorie

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by