Elp*_*rto 9 string matlab field matlab-struct
我想从字符串中删除连字符(-),斜杠(/)和空格() from a string name(i)以便我可以将其用作结构字段名称.
这是我目前正在使用该功能的丑陋方式strrep:
cell2mat(strrep(strrep(strrep(name(i), '-',''),'/',''),' ', ''))
Run Code Online (Sandbox Code Playgroud)
我也尝试了其他变体,例如:
strrep(name(i),{'-','/'},{'',''});
strrep(name(i),['-','/'],['','']);
Run Code Online (Sandbox Code Playgroud)
什么是更有效的方法呢?
gno*_*ice 10
注意:我猜你的变量name是一个字符串的单元格数组,在这种情况下你会想要使用{}(即内容索引)而不是()(即单元格索引)从中获取字符串...
与MATLAB中的许多问题一样,有许多不同的方法可以解决这个问题......
选项1:您可以使用函数REGEXPREP.以下删除连字符,正斜杠和空格:
newName = regexprep(name{i},'[-/\s]','');
Run Code Online (Sandbox Code Playgroud)
这里的好处是,\s将匹配和替换所有空白字符,它包括正常的空间(ASCII码32)以及突出部,换行等.
如果你想成为安全,并删除所有的字符,是不是在一个有效的MATLAB变量/字段名称,可以简化上述这样:
newName = regexprep(name{i},'\W','');
Run Code Online (Sandbox Code Playgroud)
选项2:如果您不需要担心删除比你列出的3个字符以外的任何,你可以使用函数ISMEMBER像这样:
newName = name{i};
newName(ismember(newName,'-/ ')) = [];
Run Code Online (Sandbox Code Playgroud)
方案三:如果你只想让一切是字母数字字符和转储休息(连字符,空格,下划线等),你可以使用函数ISSTRPROP:
newName = name{i};
newName = newName(isstrprop(newName,'alphanum'));
Run Code Online (Sandbox Code Playgroud)
最简单的方法是使用内置函数genvarname.它会使名称看起来更加丑陋,但它保证是一个有效的名称,它将保留原始的唯一性.
如果您只想删除特定字符,可以使用regexprep:
regexprep('foo- /foo- /foo', '[- \/]', '')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6285 次 |
| 最近记录: |