所以我使用shunting-yard算法从字符串处理数学公式。我将每个字符串传递给一个函数,该函数将特定字符串处理为值,但偶尔我会检查字符串,这些字符串只是应该通过的字符串 - 读取跳过shunting-yard传递。我应该只使用正则表达式来测试所有符号和数字吗?或者有一种更简单的方法可以测试吗?我想反过来会检查字符串中是否还有字母?
答案 0 :(得分:0)
虽然我确信有更好的答案,但我决定使用以下内容直到更好的方式出现,我在AS3工作:
if ( !String( value ).match( /[a-zA-Z]/ ) && !String( value ).match( /^(-?\d+)$/ ) && String( value ).match( /[()\\*+-]/ ) )
{
value = MathParser.parse( value );
}
第一个表达式验证没有字符 - 我的调车码实现不处理特殊字符或操作,它只是进行基本数学运算,所以如果剩下任何字符,则出现问题。
第二个验证字符串是否包含数学符号。如果没有数学要处理,尝试操作是没有意义的。我认为如果我想在分流场进程中处理错误,这是不必要的。
最后,我确认该值不仅仅是正值或负值的独立数量。
赞赏改善意见。