Примечание: Я предполагаю, что ваша переменная name
- это массив ячеек строк, и в этом случае вы захотите использовать {}
(т.е. content индексирование ) вместо ()
(то есть ячейка индексирование ) для получения строк из него ...
Как и во многих проблемах в MATLAB, существуетВы можете решить эту проблему различными способами ...
Опция 1: Вы можете использовать функцию REGEXPREP .Далее удаляются дефисы, косые черты и пробелы:
newName = regexprep(name{i},'[-/\s]','');
Преимущество заключается в том, что \s
будет сопоставлять и заменять все пробельные символы, включая нормальный пробел (ASCIIкод 32), а также вкладки, новые строки и т. д.
Если вы хотите быть в безопасности и удалите каждый символ, который недопустим в MATLAB имя переменной / поля , вы можете упростить вышеперечисленное до следующего:
newName = regexprep(name{i},'\W','');
Вариант 2: Если вам не нужно беспокоиться об удалении чего-либо, кроме 3 символов, которые вы перечислили, вы можете использовать функцию ISMEMBER примерно так:
newName = name{i};
newName(ismember(newName,'-/ ')) = [];
Опция 3: Если вы хотите просто сохранить все, что является буквенно-цифровым символом идамп остальных (дефисы, пробелы, подчеркивания и т. д.), вы можете использовать функцию ISSTRPROP :
newName = name{i};
newName = newName(isstrprop(newName,'alphanum'));