1

私を助けてください:

ユーザーに、数字または文字を含むファイル名 (スペースなし) を入力してもらいたい。

だから私は2つの問題があります:

1)次のコードを試しましたが、ダイアログボックスが開いて開いて開いてしまいました....「inputdlg」を再度呼び出さずに「answer」入力を編集する方法がわからないためです。

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
4

2 に答える 2

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);

スクリーンショット

次のようなものを返します。

>> fName
fName =
test.xlsx

>> fullName
fullName =
C:\Users\Amro\Documents\example\test.xlsx
于 2012-06-06T13:01:42.927 に答える
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')

于 2012-06-06T13:00:20.483 に答える