如何在 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();
或者简单地说:
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.
我正在使用 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();
或者简单地说:
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.