inputdlg - how do i recognise if someone entered a symbol, e.g. = into the box?
1 view (last 30 days)
Show older comments
Dominique Joubert
on 22 Aug 2018
Answered: Niklas Nylén
on 22 Aug 2018
how do i recognise if someone entered a symbol, e.g. = into the box?
4 Comments
Stephen23
on 22 Aug 2018
Edited: Stephen23
on 22 Aug 2018
What about all of the ASCII control characters, i.e. char(0:31)? What about non-breaking spaces, en dashes, em dashes, etc?
There are many characters that you are likely to want to exclude, and building a list of them all is intractable. It would be much easier to define what characters are allowed, as this list will be much smaller. For that you can use a regular expression.
Note that writing a language parser is not a trivial task.
Accepted Answer
Niklas Nylén
on 22 Aug 2018
Verifying that the expression is a valid equation is probably extremely hard, but validating that only "allowed" symbols are entered is quite simple using regexp:
% Allowing +, -, *, / and space. Expand list if needed.
validSpecialChars = regexptranslate('escape', '+-*/ ')
assert(isempty(regexp(input, ['[^A-Za-z0-9' validSpecialChars ']'], ...
'Expression %s contains invalid characters', input)
0 Comments
More Answers (0)
See Also
Categories
Find more on Construct and Work with Object Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!