回答
你最好的選擇可能是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_]', '_'), '^_*', '')
更新的第一個解決方案中存在拼寫錯誤。最後你應該有一個''_''而不是''''。此外,使用[表達式和替換字符串的單元格數組輸入](http://www.mathworks.com/help/techdoc/ref/regexprep.html#f76-1152246)將允許您對REGEXPREP進行一次調用。 – gnovice 2011-04-28 16:31:49
第一個解決方案是指當OP不清楚OP需要什麼時的階段 - 我假定他想用下劃線替換括號,然後去除不是字母數字或下劃線的所有內容。此外,感謝您的鏈接,我不知道這一點。很有用! – 2011-04-28 17:29:26
一種方式做,這是使用功能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
如果你想使用regular expressions(可以得到一個更復雜一點),那麼the last suggestion from Tamas將工作。但是,它可以大大簡化爲以下內容:
str = regexprep(str,{'\W','^_*'},{'_',''});
- 1. 在MATLAB水平串聯不工作
- 2. Matlab的:在Excel工作表
- 3. 如何在MATLAB工作
- 4. 文件在MATLAB工作區
- 5. MATLAB PARFOR不工作
- 6. Histeq matlab不工作
- 7. Strrep不工作在Matlab中使字符串功能
- 8. Matlab字符串操作
- 9. Matlab矩陣簡單工作
- 10. Matlab的parfor工作分配
- 11. Matlab分散不工作
- 12. MATLAB不能在Ubuntu 16.04上工作
- 13. dist函數在MATLAB中如何工作?
- 14. mat2gray如何在matlab中工作?
- 15. Varargin在MATLAB不工作對我來說
- 16. 工作區在MATLAB中何時更改?
- 17. rem函數如何在matlab中工作
- 18. analogRead函數不能在MATLAB中工作
- 19. 類型如何在MATLAB/Octave中工作?
- 20. MSER功能檢測不工作在matlab
- 21. Supprt向量機工作在MATLAB中,C不工作++
- 22. 在Matlab中保存未知工作空間的工作空間
- 23. 如何使MATLAB xUnit在MATLAB R2008b(7.7)上工作?
- 24. MATLAB:簡單cellfun不上串矢量工作
- 25. MATLAB函數打開在工作區中工作,但不在函數中
- 26. 作爲函數調用的Matlab子串?
- 27. 爲什麼&&操作符不能在Matlab/Octave中工作?
- 28. Matlab:複製Excel工作表並保存工作簿
- 29. 製作,從在Matlab
- 30. 寫作而在MATLAB
你究竟想要什麼?去除所有非字母數字字符,但應該用下劃線替換的括號除外? – 2011-04-28 09:48:28
從該單詞的開頭我想刪除非字母數字字符,並且用'_'替換字詞 – 2011-04-28 09:50:34