我是 Matlab 的新手,我正在尝试编写一个程序,该程序应在 .m 文件中声明函数之前搜索管道符号|
。
例如:
% |
function y = add(x,z)
y = x+z
end
我对如何进行有一个想法,但我无法为其编写代码:
- 向用户询问应该解析的文件
- 打开文件
- 跳过文件开头的任何空行
- 提取函数声明前的第一条注释,根据
|
符号是否存在继续
到目前为止,我已经能够将什么放入代码中:
function y = filesearch()
%Ask user for file to parse
[fileName, filePath] = uiputfile('*.m','Choose file you want to parse');
% Open the file:
fid = fopen(filePath);
% Skip empty lines:
defLine = '';
while all(isspace(defLine))
defLine = strip_comments(fgets(fid));
end
% Check for presence of |
如您所见,我想不出可以删除注释(如果存在)并检查管道符号是否存在的行。
此外,虽然它现在不是优先事项,但如果它满足某些参数,我想在每一行的末尾使用这个符号。 例如:
代数
(行尾没有|符号)
R1 = 1; R2 = 2; R3 = 3;
Rs = R1 + R2 + R3;
差分
(| 在 dydt 语句的末尾)
% |
function dydt = vanderpoldemo(t,y,Mu)
%VANDERPOLDEMO Defines the van der Pol equation for ODEDEMO.
dydt = [y(2); Mu*(1-y(1)^2)*y(2)-y(1)]; % |
对于上述差异情况,我认为需要一个 regex(一旦在函数声明之前找到了初始 |
)来检查是否存在 |
在声明不是代数的行的末尾。
对于如何提取和检查初始评论的任何帮助或建议,我将不胜感激,如果可能的话,我该如何实现我的附加问题,我应该检查每行末尾是否存在符号。
最佳答案
以下代码逐行遍历文件并在注释中搜索管道符号。找到后就停止了:
fid = fopen('add.m');
% Check for presence of | in a comment
tline = fgetl(fid);
while ischar(tline)
if strfind(tline,'%') % find comments
if strfind(tline,'|') % find pipe
disp(tline) % do something
break; % stop while loop
end
end
tline = fgetl(fid);
end
fclose(fid);
关于regex - 在 .m 文件的开头查找特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31066284/