Matlab对话框

时间:2012-06-06 10:28:09

标签: matlab dialog

请帮帮我:

我希望用户输入包含数字或/和字母(没有空格)的文件名。

所以我有两个问题:

1)我尝试了下一个代码,但是对话框被打开并打开并打开....因为我不知道如何编辑“答案”'输入而不是调用" inputdlg'试。

2)检查文件名的有效性:我使用了' isempty'并且' strfind'功能,但我知道有一个更容易的选择来做到这一点。在我的代码中,我必须在其他情况下检查每个字母:

    while isempty(strfind(answer,'=')) == 0 || isempty(strfind(answer,'*')) == 0 || ...

也许有' regexp'功能,但我不知道如何做到这一点:/

所以我的代码是:

prompt={'Enter the File name:'};
name='Input for file name';
numlines=1;
answer=inputdlg(prompt,name,numlines);
while isempty(strfind(answer,'=')) == 0
    answer=inputdlg(prompt,name,numlines);
end

2 个答案:

答案 0 :(得分:2)

在评论中建议@bdecaf,您可以使用UIPUTFILE功能显示“另存为”对话框类型:

[fName,pName] = uiputfile({'*.xlsx' 'Excel (*.xlsx)'}, 'Save as', 'myfile.xlsx');
if pName==0, error('No file selected'); end
fullName = fullfile(pName,fName);

screenshot

返回类似的内容:

>> fName
fName =
test.xlsx

>> fullName
fullName =
C:\Users\Amro\Documents\example\test.xlsx

答案 1 :(得分:1)

您的变量answer是一个单元格数组。因此,您应该检查单元格数组的内容:

name='Input for file name';
numlines=1;
answer={''};
% answer=inputdlg(prompt,name,numlines);
while  all( cellfun(@isempty,strfind(answer,'=')) ) 
    answer = inputdlg(prompt,name,numlines);
end

在更全球化的背景下,我同意@bdecaf和@Amro,你应该使用uigetfile。您还可以使用exist(fileName,'file')

检查文件的有效性