如何在 NCalc.Expression 中的字符串变量中转义单引号 - 反斜杠不起作用

How to escape single quote within string variable in NCalc.Expression - Backslash didn't work

我正在使用 NCalc.Expression 来评估一个条件,该条件涉及与包含单引号的字符串值进行比较。在 NCalc 中,字符串使用单引号而不是双引号表示。

例如:

[variable1]=='Sample's Data'

为了转义单引号,我尝试像这样附加反斜线 -

[variable1]=='Sample\'s Data'

但是当它被分配给一个字符串变量时,它会删除反斜杠作为 -

[variable1]=='Sample's Data'

并且在将其分配给 Expression 构造函数后,在计算第二个单引号 "s Data" 后的文本无法识别时会抛出错误。

当我尝试如下添加两个反斜杠时 -

[variable1]=='Sample\'s Data'

这被分配给一个字符串变量作为

"[variable1]=='Sample\'s Data'"

但评估它不会抛出异常但比较失败,因为数据是

"[variable1]=='Sample's Data'"

没有反斜杠。

我该如何解决这个问题?

一种可能的方法是使用 ' 的 Unicode 代码点,即 U+0027

var e = new Expression(@"'Sample\u0027s Data'");
var evaluated = e.Evaluate();

Source

或者简单地说:

var e = new Expression(@"'Sample\'s Data'");
var evaluated = e.Evaluate();

没有逐字字符串:

var e = new Expression("'Sample\'s Data'");
var evaluated = e.Evaluate();

这给出 true:

var e = new Expression("variable=='Sample\'s Data'");
e.Parameters["variable"] = "Sample's Data";
var evaluated = e.Evaluate();

根据 wiki https://ncalc.codeplex.com/wikipage?title=values&referringTitle=Home#strings

You can escape special characters using \, \', \n, \r, \t.