Если под «специальными символами» вы подразумеваете менее часто используемые Unicode символы, такие как ¥
, ¶
или ¼
, то вы можете использовать любую функцию REGEXPREP или установите функции сравнения, такие как ISMEMBER (и вы можете сначала преобразовать строку символов в ее эквивалентный целочисленный код, используя функцию DOUBLE , если необходимо). Вот пара примеров, где все, кроме стандартных символов английского алфавита (строчные и прописные) удаляются из строки:
str = ['ABCDEFabcdefÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐ']; %# A sample string
str = regexprep(str,'[^a-zA-Z]',''); %# Remove characters using regexprep
str(~ismember(str,['A':'Z' 'a':'z'])) = ''; %# Remove characters using ismember
%# (as suggested by Andrew)
str(~ismember(double(str),[65:90 97:122])) = ''; %# Remove characters based on
%# their integer code
Все вышеперечисленные параметры дают одинаковый результат:
str =
ABCDEFabcdef
EDIT:
В ответ на конкретный пример в обновленном вопросе, вот как вы можете использовать REGEXPREP для замены всех символов, которые не a-z
, A-Z
или 0-9
с пробелами:
str = regexprep(str,'[^a-zA-Z0-9]','');
Это может быть проще, чем пытаться написать регулярное выражение для соответствия каждому отдельному «специальному» символу, поскольку потенциально их может быть много. Однако, если вы были уверены , что единственными специальными символами будут _
, %
и !
, это должно достигнуть того же, что и выше:
str = regexprep(str,'[_%!]','');
Также, как упоминалось в комментарии Amro , вы также можете использовать функцию ISSTRPROP для замены всех не алфавитно-цифровых символов пробелами, например:
str(~isstrprop(str,'alphanum')) = '';