inputdlg - how do i recognise if someone entered a symbol, e.g. = into the box?

1 vue (au cours des 30 derniers jours)
how do i recognise if someone entered a symbol, e.g. = into the box?
  4 commentaires
Dominique Joubert
Dominique Joubert le 22 Août 2018
i want a user to enter the right side of an equation:for example s+2*a-3/r
Stephen23 le 22 Août 2018
Modifié(e) : Stephen23 le 22 Août 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.

Connectez-vous pour commenter.

Réponse acceptée

Niklas Nylén
Niklas Nylén le 22 Août 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)

Plus de réponses (0)


En savoir plus sur Argument Definitions dans Help Center et File Exchange





Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by