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

 Réponse acceptée

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

8 commentaires

Matt Fig
Matt Fig le 1 Oct 2012
Modifié(e) : Matt Fig le 1 Oct 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 le 1 Oct 2012
Modifié(e) : Jan le 1 Oct 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 le 1 Oct 2012
Yes, I should not have left that out.
Nikolay Rodionov
Nikolay Rodionov le 1 Oct 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 le 1 Oct 2012
Modifié(e) : Matt Fig le 1 Oct 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 le 1 Oct 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 le 1 Oct 2012
Thank you so much!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by