Matlab对话框

Matlab对话框,matlab,dialog,Matlab,Dialog,请帮助我: 我希望用户输入包含数字或/和字母的文件名(不带空格) 所以我有两个问题: 1) 我尝试了下一个代码,但是对话框打开了,打开了,打开了。。。。因为我不知道如何编辑“应答”输入而不再次调用“inputdlg” 2) 检查文件名的有效性:我使用了'isempty'和'strfind'函数,但我知道有一个更简单的选项可以做到这一点。在我的代码中,我必须在其他情况下检查每个字母: while isempty(strfind(answer,'=')) == 0 || isempty(st

请帮助我:

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

所以我有两个问题:

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

变量
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(文件名,'file')

检查文件的有效性。如注释所示,您可以使用函数显示“另存为”类型的对话框:

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

返回类似于:

>> fName
fName =
test.xlsx

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

只是一个通知-输入文件名有
uigetfile
uiputfile
。您知道,在测试中,您正在查找字符串中的
=
*
符号(这使其成为无效的文件名)。@bdecaf,谢谢,但我不希望用户从其目录中选择一个文件,只需输入文件名,我将为其创建带有输入名称的文件(xlsx)(并向文件中插入数据)。例如:用户插入了:myfile,因此我将创建一个文件:myfile.xlsx。我的意思是我只需要一个名称,其余的我都知道要做。@AlonShmiel:这正是
uiputfile
函数的用途。。好的,我知道了,谢谢大家!