如果“特殊字符”是指不常用的字符Unicode像这样的人物¥
, ¶
, or ¼
,那么您可以使用函数正则表达式或设置比较函数,例如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:
针对更新问题中的具体示例,您可以使用以下方法正则表达式替换所有字符aren't a-z
, A-Z
, or 0-9
带空格:
str = regexprep(str,'[^a-zA-Z0-9]','');
这可能比尝试编写正则表达式来匹配每个单独的“特殊”字符更容易,因为可能有很多字符。然而,如果你是certain唯一的特殊字符是_
, %
, and !
,这应该达到与上面相同的效果:
str = regexprep(str,'[_%!]','');
另外,正如评论中提到的Amro,您还可以使用该功能ISSTRPROP将所有非字母数字字符替换为空格,如下所示:
str(~isstrprop(str,'alphanum')) = '';