Matlab scinde une chaîne de plusieurs délimiteurs
J'ai une cellule de la liste de chaînes de caractères comme ceci:
cellArr =
'folderName_fileName_no.jpg',
'folderName2_fileName2_no2.jpg'
Je veux la faire comme ça
{folderName, fileName, no},
{folderName2, fileName2, no2}
Comment le faire dans matlab?
Je sais que je peux utiliser
regexp(cellArr, '_', 'split'),
mais comment puis-je utiliser plus d'un délimiteurs?
Avez-vous entendu parler de
fileparts
, fullfile
, pathsep
et outils similaires? Ces outils probablement éviter ce problème...OriginalL'auteur user570593 | 2012-10-31
Vous devez vous connecter pour publier un commentaire.
Je l'ai trouvé.. Merci pour les réponses..
OriginalL'auteur user570593
Il est très similaire à la C la méthode de la chaîne de la segmentation. À l'aide de
strtok
, vous pouvez marquer selon la délimiteur vous choisissez ( dans votre cas,'_' )STRTOK de référence
Note, vous allez utiliser le C idiome, à plusieurs reprises, l'appel de
strtok
dans une boucle sur le reste de sa chaîne qu'il ne retourne que le premier jeton à chaque fois. Un exemple est donné dans la référence.Pour répondre à vos EDIT:
directement à partir de l'exemple 3 dans la référence. < afin De la rendre tout à fait évident, que vous venez de remplacer
strtok(remain)
avecstrtok(remain,REQUIRED_DELIMITERS)
et ajouter logique triviale à la chute de l'extension de fichier.REQUIRED_DELIMITERS dans votre cas, serait '_.', une chaîne de caractères contenant tous les délimiteurs.
OriginalL'auteur im so confused
Il est également utile de faire à l'aide de
strsplit
:Alors C est une cellule de tableau contenant les trois vecteurs. Il y a aussi
filepath
si c'est nécessaire pour supprimer les parties qui ne sont pas nécessaires, comme des extensions.strsplit
peut également être utilisé avec la Regex s'il le faut!OriginalL'auteur Matt B.