Comment diviser une chaîne en sous-tableaux de longueur n dans Matlab?
par exemple.
Entrée: "ABCDEFGHIJKL"
, avec des sous-tableaux de longueur 3
Résultat: {ABC}, {DEF}, {GHI}, {JKL}
3 Réponses :
Cela devrait le faire :)
string = cellstr(reshape(string, 3, [])')
Si la longueur de la chaîne n'est pas un multiple de n
, vous avez probablement besoin d'une boucle ou arrayfun
:
result = 1Ã4 cell array {'ABC'} {'DEF'} {'GHI'} {'JK'}
Alternativement, accumarray
peut également être utilisé:
x = 'ABCDEFGHIJK'; n = 3; result = accumarray(floor((0:numel(x)-1).'/n)+1, x, [], @(t) {t.'}).';
Merci beaucoup! Ceci est un article très détaillé et incroyable pour mon cas d'utilisation! J'apprécie ton aide :)
@ Snel12 Heureux de pouvoir aider :-)
Une expression régulière peut faire le travail ici:
exp = '.{3}' %this will output {'abc'} {'def'} but no {'gh'}
qui donne:
res = 1Ã3 cell array {'abc'} {'def'} {'gh'}
Si vous ne voulez faire correspondre que le groupe de 3 char:
str = 'abcdefgh' exp = '.{1,3}' %the regular expression (get all the group of 3 char, if number of char left < 3, take the rest) res = regexp(str,exp,'match')
Bonne idée! Approche très propre