我是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 |
正如您所看到的,我无法想到可以删除注释的行(如果存在)并检查是否存在管道符号。
此外,虽然现在不是优先事项但是如果满足某些参数,我想在每行的末尾使用此符号。 例如:
Algebraic
(行号末尾没有|符号)
R1 = 1; R2 = 2; R3 = 3;
Rs = R1 + R2 + R3;
Differential
(|在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)]; % |
对于上述差异情况,我认为需要正则表达式(一旦在函数声明之前找到初始|
)以检查是否存在|
在声明不是代数的行的末尾。
我很感激有关如何提取和检查初始评论的任何帮助或建议,以及是否可以实现我的其他问题,我应该检查每行的末尾是否存在符号。
答案 0 :(得分:1)
以下代码逐行浏览文件并在注释中搜索管道符号。它在被发现后停止:
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);