strtok is only using the first character of my delimiter instead of the full character vector
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Samuel Morstein
le 26 Mar 2020
Réponse apportée : Peng Li
le 26 Mar 2020
I am trying to use strtok to split a character vector using a character vector as my delimiter. However, MATLAB is only using the first character in the vector.
For example,
tok=strtok('Hello World','HAIR')
Returns
tok='ello World'
Instead of 'Hello World'
2 commentaires
Guillaume
le 26 Mar 2020
I'm curious why you think that it should return 'Hello World' when H is one of the delimeter you specified.
Your strtok(xxx,'HAIR') explicitly tells matlab that H, A, I, or R is a delimiter.
Réponse acceptée
Guillaume
le 26 Mar 2020
"How do I make it so that only HAIR is the delimiter and not H, A, I, or R?"
You can't do that with strtok. The simplest is to regexp with the 'split' option:
>> regexp('Hello World HAIR xyz HAIRdo', 'HAIR', 'split')
ans =
1×3 cell array
{'Hello World '} {' xyz '} {'do'}
Note: read the documentation of regexp as some characters such as .+- have special meaning.
0 commentaires
Plus de réponses (1)
Peng Li
le 26 Mar 2020
why don't you use strsplit instead?
>> a = strsplit('Hello World', 'HAIR')
a =
1×1 cell array
{'Hello World'}
>> a = strsplit('HHAIRello World', 'HAIR')
a =
1×2 cell array
{'H'} {'ello World'}
0 commentaires
Voir également
Catégories
En savoir plus sur Large Files and Big Data dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!