MATLAB中的工作字符串



我在MATLAB中有以下字符串,例如

@ # % % F1_USA (40) _u

F1_USA_40__u

有这个功能吗?

您最好的选择可能是regexprep,它允许您使用正则表达式替换字符串的部分:

s_new = regexprep(regexprep(s, '[()]', '_'), '[^A-Za-z0-9_]', '')

更新:根据你更新的评论,这可能是你想要的:

s_new = regexprep(regexprep(s, '^[^A-Za-z0-9_]*', ''), '[^A-Za-z0-9_]', '')

或:

s_new = regexprep(regexprep(s, '[^A-Za-z0-9_]', '_'), '^_*', '')

这样做的一种方法是使用函数ISSTRPROP查找字母数字字符的索引,并相应地替换或删除其他字符:

>> str = '@#%%F1_USA(40)_u';           %# Sample string
>> index = isstrprop(str,'alphanum');  %# Find indices of alphanumeric characters
>> str(~index) = '_';                  %# Set non-alphanumeric characters to '_'
>> str = str(find(index,1):end)        %# Remove any leading '_'
str =
F1_USA_40__u                           %# Result

如果你想使用正则表达式(这可能会变得更复杂),那么Tamas的最后一个建议将起作用。然而,它可以大大简化为以下内容:

str = regexprep(str,{'W','^_*'},{'_',''});

最新更新