Ncalc如何评估多值字符串参数
Ncalc how to evaluate multi-value string parameters
我正在使用 Ncalc 评估某些字符串值的存在
if (@Xval = 'Z','T','F')
当@xval 作为单个值作为参数输入时(@Xval = 'Z'),这很有效。这将是 return 一个真实的评价。我现在正在寻找当@Xval 可能会说 'Z'、'H' 时评估相同的公式,换句话说,Xval 包含这 2 个值,我试图找出 'Z' 是否在其中。
if (in (@Xval,'Z','H','M'),'T','F')
也是如此,我在一组选项 (Z,H,M) 中寻找 Xval 的值。
我可以通过自定义函数执行此操作吗?如果是这样怎么办?还有其他想法吗?
谢谢
你可以试试
Expression e = new Expression("if (iscontians("ZHM",@Xval),'T','F')", EvaluateOptions.IgnoreCase);
e.EvaluateFunction += evalFunction;
编写自定义函数
private void evalFunction(string name, FunctionArgs args)
{
switch (name.ToUpper())
{
case "ISCONTAINS":
if (args.Parameters.Length < 2)
throw new ArgumentException("isContains() takes at least 2 arguments");
args.Result = args.Parameters[0].Evaluate().ToString().Contains(args.Parameters[1].Evaluate().ToString());
break;
default:
break;
}
}
我正在使用 Ncalc 评估某些字符串值的存在
if (@Xval = 'Z','T','F')
当@xval 作为单个值作为参数输入时(@Xval = 'Z'),这很有效。这将是 return 一个真实的评价。我现在正在寻找当@Xval 可能会说 'Z'、'H' 时评估相同的公式,换句话说,Xval 包含这 2 个值,我试图找出 'Z' 是否在其中。
if (in (@Xval,'Z','H','M'),'T','F')
也是如此,我在一组选项 (Z,H,M) 中寻找 Xval 的值。
我可以通过自定义函数执行此操作吗?如果是这样怎么办?还有其他想法吗?
谢谢
你可以试试
Expression e = new Expression("if (iscontians("ZHM",@Xval),'T','F')", EvaluateOptions.IgnoreCase);
e.EvaluateFunction += evalFunction;
编写自定义函数
private void evalFunction(string name, FunctionArgs args)
{
switch (name.ToUpper())
{
case "ISCONTAINS":
if (args.Parameters.Length < 2)
throw new ArgumentException("isContains() takes at least 2 arguments");
args.Result = args.Parameters[0].Evaluate().ToString().Contains(args.Parameters[1].Evaluate().ToString());
break;
default:
break;
}
}