Search string for special characters
Ältere Kommentare anzeigen
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 Kommentare
Stephen23
am 8 Sep. 2017
"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
am 8 Sep. 2017
Milos Matovic
am 11 Nov. 2020
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, '[/\\*:?"<>|!]'))
Akzeptierte Antwort
Weitere Antworten (2)
Matt
am 8 Sep. 2017
1 Kommentar
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?
Kategorien
Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!