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

我要删除连字符( - ),斜杠( / )和空格( )从字符串name(i)删除,以便我可以将其用作结构字段名称。

这是我目前使用功能strrep的丑陋方式:

cell2mat(strrep(strrep(strrep(name(i), '-',''),'/',''),' ', '')) 我还尝试了其他变体,例如:

strrep(name(i),{'-','/'},{'',''}); strrep(name(i),['-','/'],['','']); 什么是更有效的方法?



回答:

注意:我猜您的变量name是一个字符串单元格数组,在这种情况下,您将要使用{} (即内容索引 )而不是() (即单元索引 )从中获取字符串...

与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'));

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


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

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



所有时间均为北京时间。现在的时间是 02:55


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