Make a string an acceptable matlab file name
34 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Lucas
el 10 de Sept. de 2012
Editada: William Smith
el 26 de Mzo. de 2018
I'm working on a process to automate out model conversion into reference models and I was wondering if there was a way to take a string and make it into a valid MatLab name.
Like you can’t have numbers as the first character in a name, so if I have a model that has a subsystem named ‘2a_Subsystem’, and I right-click and hit ‘convert to model block’ it gives me a new model with the name of ‘a_Subsystem’. If I have another subsystem called ‘3a_Subsystem’ and I convert it to a model block it gives me a new model with that name ‘a_Subsystem0’.
Is there a function that I can pass a string and convert it to a valid MatLab name like it does when I click on convert to model block? Maybe one that can check to see if that name is currently being used in that directory and adds a number to it like it does above. I can do the second part if there isn’t a function that’ll check for something like that already. Thanks!
0 comentarios
Respuesta aceptada
Más respuestas (1)
William Smith
el 26 de Mzo. de 2018
Editada: William Smith
el 26 de Mzo. de 2018
I found urlencode() and urldecode() work nicely, and I particularly like the reversibility, so you can parse the filename to recover the original string.
One caveat : in Windows, * is a reserved character, but Matlab urlencode does not encode that. Although it does decode it. The appears to be the only Windows reserved character that urlencode does not encode. Different languages appear to disagree about whether * should be urlencoded, see https://stackoverflow.com/questions/6533561/urlencode-the-asterisk-star-character/6533607#6533607
So I wrote my own two short functions:
function urlOut = urldecode(urlIn)
urlOut = char(java.net.URLDecoder.decode(urlIn,'UTF-8'));
end
function urlOut = urlencode(urlIn)
urlIn = replace(urlIn, '*', '%2A');
urlOut = char(java.net.URLEncoder.encode(urlIn,'UTF-8'));
end
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!