Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我要删除连字符( - ),斜杠( / )和空格( )从字符串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')); 更多&回答... |
![]() |
![]() |