我要删除连字符( - ),斜杠( / )和空格( )从字符串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'));
更多&回答...