How to know if a string is a valid matlab function ?
显示 更早的评论
Hi,
I'm looking for a function which can tell me if a string is a valid matlab function.
For exemple :
function_i_m_looking_for('sin'); % should return 1
function_i_m_looking_for('toto'); % should return 0
Thank you
采纳的回答
更多回答(3 个)
Walter Roberson
2014-3-6
regexp(x, '^[A-Za-z]\w*$') && ismember(exist(x), [2 3 5 6])
The beginning bit filters out embedded operators and file extensions and directory specifiers that exist() would otherwise pay attention to. 2 would be .m file on your search path, 3 is mex file on search path, 5 is built-in MATLAB function, 6 is .p file on search path. You might also want to include 8 which is class name.
3 个评论
Star Strider
2014-3-6
Elegant!
Walter Roberson
2014-3-6
Elegant is not what I would call it ;-)
per isakson
2014-3-7
编辑:per isakson
2014-3-7
I call it smart, however ...
>> str = '+';
>> regexp( str, '^[A-Za-z]\w*$' )
ans =
[]
>> regexp( str, '^[A-Za-z]\w*$' ) && true
Operands to the || and && operators must be convertible to logical scalar values.
>>
Why isn't there a regular expression function, which returns a logical value?
.
A modified one-liner
>> not(isempty(regexp( str, '^[A-Za-z]\w*$' ))) && true
ans =
0
Charly
2014-3-6
0 个投票
1 个评论
Jos (10584)
2014-3-6
This will also work for non-functions, like text files etc ...
Jos (10584)
2014-3-7
0 个投票
FYI, I just upload my function ISFUNCTION to the File Exchange:
类别
在 帮助中心 和 File Exchange 中查找有关 Characters and Strings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!