Search string for special characters
이전 댓글 표시
Hi all,
I have a program that saves and loads data to and from a .mat file. Currently the UIPUTFILE and save function method I am using allows the user to save files with special characters. They then cannot load this file again. The most common issue is users saving the file with a period.
How can I search the string for special characters? I want to throw up an error message if the user tries to save the file with a filename that MATLAB will not be able to load with UIGETFILE and the load function.
I have tried regexp but I am struggling to make it do what I want, even using backslashes in front of the characters in places.
if ~isempty(regexp(filename, '[/\*:?"<>|!]'))
uiwait(msgbox('Filename contains illegal characters.' 'Filename Error','error','modal'));
else
save(SavePath,'DataStructure');
end
Thanks,
Matt
댓글 수: 3
Stephen23
2017년 9월 8일
"The most common issue is users saving the file with a period"
The period is permitted in Windows filenames. What OS are you using?
Matt
2017년 9월 8일
Milos Matovic
2020년 11월 11일
Matt, your code works for me and it covers all invalid chars for file names as specified by Windows.
Only change i made is added a double backslash because it is a escape character so regular expression was not accounting for it.
if ~isempty(regexp(filename, '[/\\*:?"<>|!]'))
채택된 답변
추가 답변 (2개)
Pal Szabo
2017년 9월 8일
0 개 추천
Can't you use strrep? You can replace the special characters with something which works. https://uk.mathworks.com/help/matlab/ref/strrep.html
Matt
2017년 9월 8일
댓글 수: 1
Some notes:
- Do not do this, it is an unreliable and obfuscated way to remove a file extension:
file_without_extension = file(1:(length(file)-4))
Instead simply use fileparts: it is simpler and correct for any length extension.
- \s matches all whitespace characters. Do you really want vertical tab in your filenames?
카테고리
도움말 센터 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!