在一个matlab程序中我有一个需要读入的外部参数文件。就像
a = 1/3
b = 'test'
目前我使用textscan
读取这个文件,使用str2num
解析a
的值。但是,我读到 str2num
在内部使用 eval
,出于安全原因,这是不可取的:如果有人制作了 a = 'delete something'
,并且然后 str2num
将作为副作用执行该字符串。 str2double
不适用于小数。有没有更好的方法将 1/3
从外部文件解析到 matlab 中?
最佳答案
如果您要解析只能是简单数字或除法的输入,str2double
/str2double
方法可能就足够了。但是,如果您希望总体上安全地解析输入,我建议您限制输入。
例如像这样:
rawString= 'dir+3/5'
safeCharacters = ['0':'9' '+-*/\^eEij. '];
if all(ismember(rawString,safeCharacters))
str2num(junkString)
end
当然这可能会过滤掉一些可能好的输入,例如:str2num('rand')
关于matlab - 从配置文件将小数解析为matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21458722/