Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab-如何替换向量中的所有特殊字符?

是否可以通过正则表达式替换matlab向量中的所有特殊字符?

谢谢

* 编辑:*

谢谢你的回复。我正在努力实现以下目标。我有一个文本文件,其中包含小说中的几段内容。我已将此文件读入向量。

fileText = ['Token1,''token_2''token%!3']等。

在这种情况下 , _ % !是特殊字符,我想将它们替换为空格('')。可以通过正则表达式来实现吗?我可以使用javascript来做到这一点,但无法在Matlab中使用它。

谢谢



回答:

如果“特殊字符”你的意思是较少用到的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
编辑:

为了响应更新后的问题中的特定示例,以下是如何使用REGEXPREP空格替换不是 az , AZ或0-9所有字符的方法:

str = regexprep(str,'[^a-zA-Z0-9]',''); 这可能比尝试编写一个正则表达式来匹配每个单独的“特殊”字符要容易得多,因为可能有很多正则表达式。但是,如果您确定唯一的特殊字符将是_ , %和! ,则应达到与上述相同的效果:

str = regexprep(str,'[_%!]',''); 另外,如Amro的评论中所述,您还可以使用函数ISSTRPROP将所有非字母数字字符替换为空白,如下所示:

str(~isstrprop(str,'alphanum')) = '';

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 20:42


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.