MATLAB中的工作字符串

MATLAB中的工作字符串,matlab,string,Matlab,String,例如,我在MATLAB中有以下字符串 @#%%F1_美国(40) 我想要 F1_美国_40_ 它有任何功能吗?您最好的选择可能是regexprep,它允许您使用正则表达式替换字符串的某些部分: s_new = regexprep(regexprep(s, '[()]', '_'), '[^A-Za-z0-9_]', '') 更新:根据您更新的评论,这可能是您想要的: s_new = regexprep(regexprep(s, '^[^A-Za-z0-9_]*', ''), '[^A-Za-z

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

@#%%F1_美国(40)

我想要

F1_美国_40_


它有任何功能吗?

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

s_new = regexprep(regexprep(s, '[()]', '_'), '[^A-Za-z0-9_]', '')
更新:根据您更新的评论,这可能是您想要的:

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


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

>> 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
如果你想使用(这可能会变得更复杂一点),那么就可以了。但是,它可以大大简化为以下内容:

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

你到底想要什么?去掉所有非字母数字字符,括号除外,括号应改为下划线?从单词开始,我想删除非字母数字字符,在单词中,我想用“\u”替换,更新的第一个解决方案中有一个打字错误。你应该在结尾有一个
'
,而不是
'
。此外,使用将允许您只调用一次REGEXPREP。第一种解决方案是指不清楚OP想要什么的阶段-我假设他想要用下划线替换括号,然后去掉所有不是字母数字或下划线的内容。另外,谢谢你的链接,我不知道。非常有用!
str = regexprep(str,{'\W','^_*'},{'_',''});