Matlab split string несколько разделителей
у меня есть список ячеек строк такой:
cellArr =
'folderName_fileName_no.jpg',
'folderName2_fileName2_no2.jpg'
Я хочу, чтобы это было так
{folderName, fileName, no},
{folderName2, fileName2, no2}
как это сделать в MATLAB? Я знаю, что могу использовать
regexp(cellArr, '_', 'split'),
но как я могу использовать более одного разделителя?
3 ответов
это очень похоже на метод c токенизации строк. Используя strtok
, вы можете токенизировать на основе любого выбранного вами разделителя (в вашем случае'_')
Примечание, Вы будете использовать идиому C многократного вызова strtok
в цикле на оставшейся строке, так как он возвращает только первый токен каждый раз. Пример приведен в справке.
чтобы ответить на ваше редактирование:
использование strtok на Cell array of strings возвращает массив ячеек строк в token и массив символов в remain:
s = {'all in good time'; ...
'my dog has fleas'; ...
'leave no stone unturned'};
remain = s;
for k = 1:4
[token, remain] = strtok(remain);
token
end
прямо из примера 3 в справочнике. strtok(remain) С strtok(remain,REQUIRED_DELIMITERS)
и добавьте тривиальную логику, чтобы удалить расширение файла.
это также полезно сделать с помощью strsplit
:
cellArr =
'folderName_fileName_no.jpg',
'folderName2_fileName2_no2.jpg'
C = strsplit(cellArr,'_')
затем C-это массив ячеек, содержащий три вектора. Также есть filepath
Если необходимо удалить ненужные части, например расширения. strsplit
также можно использовать с регулярным выражением, если это необходимо!