表达式

本帮助页面上的信息同时适用于 CXone StudioDesktop Studio

表达式是脚本中比较值或产生值的任何内容。例如,如果按照比较值或值中结果的方式使用,X = 5Y = dogZ = "{var1}" 都可以是表达式。例如,X = 5 将变量 X 的值与 5 进行比较。同样,Z = "{var1}" 将变量 Z 的值与变量 var1 的当前值进行比较。

前面的任何示例也可以是赋值语句。赋值语句将等号右侧的值赋给左侧的变量。变量赋值不是表达式。

表达式可用于:

  • 执行数学或代数计算。
  • 比较两个值并根据比较结果采取行动。
  • 根据表达式的计算结果是 true 还是 false 做出逻辑决策。

在表达式中比较的值可以由字母、数字或这两者的组合组成。它们还可以包含变量。Studio 中有三种类型的表达式,数值字符串布尔

试试看

下载表达式示例脚本并将其导入 Studio。本帮助页面中的示例可在示例脚本中的 Snippet 操作中使用。您可以打开 Snippet Editor 窗口并运行调试器,了解每个示例的运行情况。

数值表达式

数值表达式仅包含数字和数学或布尔运算符,例如 +-,等等。如果这些变量保存计算中使用的数值,它们还可以包含变量引用。

数值表达式用于代码片段中,其配置 Studio 操作的属性。例如,在 IF 操作中,您可以使用要评估的表达式将 Expression 属性配置为此操作的决策机制。您可以使用 IF 关键字在代码片段中执行相同的操作。

数值表达式语法

数字表达式不能用引号括起来。这包括数学和布尔关闭 一种数据类型,它有两种可能值:真和假。表达式。如果用引号括住数字表达式,会将其视为文本。例如,c1 = 123 + 456 的值为 579,但 c2 = "123 + 456" 的值为 123 + 456

不要将数值表达式中使用的变量括在大括号和双引号中。这会导致您的脚本出现错误。

数值表达式的求值

在数值表达式中,如果脚本可以将数值求值为数字,那么它会这样做。这意味着:

  • 任何无法求值为数值的内容(例如字母或单词)都被假定为变量引用。
  • 如果表达式中的非数字字符是脚本中具有字符串值的变量,则脚本会忽略非数字字符并对原始表达式的数字部分进行求值。
  • 如果表达式中的非数字字符是具有数值的变量,则脚本会在表达式的求值中包含该值。
  • 如果表达式中的非数字字符不是脚本中的变量,则脚本会忽略原始表达式中的这些字符。

在以下示例中,脚本尝试将 nextNum 求值为变量,因为无法将其求值为数字:c1 = 123 + 456 + nextNum。以下示例显示了三种场景的结果,具体取决于 nextNum 是否为变量以及其值是什么。

nextNum 是具有字符串值的变量时,结果为 c1 = 579

ASSIGN nextNum = "my string"
ASSIGN c2 = 123 + 456 + nextNum

nextNum 是具有数值的变量时,结果为 c2 = 1368

ASSIGN nextNum = 789
ASSIGN c3 = 123 + 456 + nextNum 

nextNum 不是变量时,结果为 c3 = 579

ASSIGN c3 = 123 + 456 + nextNum

如果您求值的表达式包含两个变量,并且这两个变量都保存被视为字符串值的数字,则脚本会将这些值转换为数字,然后相应地对它们进行求值。以下示例的结果是 c4 = 50

ASSIGN nextNum = "20"
ASSIGN otherNum = "30"
ASSIGN c4 = nextNum + otherNum

您可以通过将表达式括在大括号中来将数值表达式包含在字符串值中。例如:

ASSIGN nextNum = 6
ASSIGN otherNum = 7
ASSIGN c5 = "There are {nextNum + otherNum} fish in the aquarium."

带有起首零位的数字

在数字被视为字符串时和被视为数字时,Studio 处理数字的方式有所不同。当数字被视为字符串时,它们可以有起首零位。如果将两个保存具有起首零位的数字字符串值的变量加在一起,则起首零位将被删除。例如,以下表达式的结果是 c6=59

ASSIGN nextNum = "00020"
ASSIGN otherNum = "000039"
ASSIGN c6 = nextNum+otherNum

如果您需要结果值有起首零位,您可以使用 format() 函数零占位符将零添加回值中。

字符串表达式

字符串表达式包括字母数字和特殊字符,例如 #@ 等。字符串表达式的语法类似于将字符串值赋给变量的语法:

  • 在代码片段中,表达式的字符串值必须始终用单引号或双引号引起来。这与字符串值相同
  • 要在字符串表达式中进行变量替换,请将变量名称括在大括号中。
  • 某些字符(例如双引号)被视为代码。要在字符串值中包含这些字符,必须使用转义序列

字符串比较

字符串可被求值为布尔表达式中的值。例如,您可以在 IF 语句中使用以下表达式:

customer = "Grendel Cainson"

customer 包含精确值 Grendel Cainson 时,结果为 true。对于任何其他值,结果为 false

您可以在字符串比较中使用大于和小于运算符。在这种比较中,每个字母字符都被分配一个值(A = 1 和 Z = 26)。该脚本首先比较第一个字符。如果它们不同,则以字母表中靠后的字母开头的较大。例如,在比较 apple > banana 中,结果为 false。这是因为 banana 大于 apple,因为 b 在字母表中的靠后位置。

如果第一个字符相同,脚本将比较第二个字符。如果它们不同,比较就到此为止。如果第二个字符相同,脚本将继续比较字符,直到到达一对不同的字符为止。例如,在 grapes > grapey 的比较中,脚本会比较每个字符,直到到达末尾为止。结果是 false,因为 grapey 大于 grapes,因为在字母表中 ys 靠后。

在大于或等于或者小于或等于比较中,适用相同的规则。如果脚本发现运算符左侧的字符串与右侧的字符串相同,则表达式的计算结果为 true

字符串比较区分大小写。

字符串中的转义序列

Studio 支持字符串常量中的转义序列。转义序列允许您在字符串中包含某些特殊字符。双引号或左大括号等字符被识别为代码。此类字符包含在字符串中时,编译器会使用非文字代码含义而不是文字值来解释它们。转义序列允许在字符串中包含这些字符。如果在没有转义序列的字符串中包含这些字符,则输出将不是预期的,并且可能会导致错误。

无需向包含转换后的 XML 或 JSON 的字符串添加转义序列。会自动为需要转义序列的字符添加转义序列。

在使用转义序列的任何字符串前,加上美元符号 ($): $"..."。在双引号内,您可以使用以下任何转义序列:

序列 详细信息
\" 嵌入一个双引号。
\' 嵌入一个单引号。
\t 嵌入一个制表符 (ASCII 9)。
\r 嵌入一个回车符 (ASCII 13)。
\n 嵌入一个换行符 (ASCII 10)。
\b 嵌入一个退格 (ASCII 8)。
\{ 嵌入一个左花括号。如果在右大括号之前的文本中没有转义的左大括号,则只需要转义右大括号。如果需要转义右大括号,则如下所示:\}
\0 嵌入一个空值(0 是一个零值)。

以下示例使用 \n 转义序列向字符串添加换行符。这会将光标向下移动到下一行,而不会返回到该行的开头。

x = $"A phrase\nAnd a new line"

打印字符串时,输出如下所示:

A phrase

And a new line ]

在前面的示例中,右方括号代表光标。

以下示例使用 \" 转义序列在字符串中包含双引号:

y = $"Embedding \"double quotes\" in a string."

打印字符串时,输出如下所示:Embedding "double quotes" in a string.如果没有转义序列,脚本只能识别单词 double 之前的双引号符号之前的字符串。

以下示例使用 \{ 转义序列在字符串中包含文字大括号:

z = $"Using \{curly} braces."

打印字符串时,输出如下所示:Using {curly} braces.如果没有转义序列,脚本会将 {curly} 解释为变量。如果未找到变量 curly 的值,脚本会将其替换为空,因此变量的值将为 Using braces.

布尔表达式

Studio 支持使用布尔关闭 一种数据类型,它有两种可能值:真和假。表达式。它们可用于在脚本中创建决策逻辑。由于布尔表达式的计算结果为 true 或 false,因此您可以使用它们来创建为决定采用哪条路径而必须满足的条件。如果满足条件,则脚本采用该分支,但如果不满足,则其采用另一个分支。

您可以在布尔表达式中使用许多运算符。这使您可以定义适合脚本需求的逻辑条件语句。例如,您可以使用等号 (=) 检查一个值是否与另一个值相同,也可以使用大于运算符 (>) 检查一个值是否大于另一个值。

您可以将布尔表达式与 IfSnippet 等操作(CXone Studio 中的帮助页面:IfSnippet)一起使用。您可以在代码片段中使用的许多语句使用布尔表达式作为决策机制,包括:

  • IF
  • IF ... ELSE
  • SELECT

以下示例展示了在代码片段中将布尔表达式与 IF...ELSE 语句一桶使用:

ASSIGN var1 = "Cat"
IF var1 = "Dog"
{
	ASSIGN dogWasFound = true
}
ELSE
{
	ASSIGN dogWasFound = false
}

也可以用在通过操作进行的脚本编写中使用布尔表达式。下图显示了使用 Studio 操作的相同 IF...ELSE 语句。您可以在表达式示例脚本中测试此示例。

该页面此部分中布尔值示例的脚本版本。

用于启用或禁用设置的布尔值

有时在脚本中使用布尔值来启用或禁用 ​​CXone 中的设置。在这些情况下,您可以将布尔值赋给变量。要启用设置,请赋值为 true1。要禁用设置,请赋值为 false0

单词和数字都是有效的布尔值。但是,请检查您正在使用的 Studio 操作的在线帮助,看看该操作的属性是否有首选值。无论哪种情况,您使用的值都不得用引号引起来。如果将该值用引号引起来,则脚本会将其视为文字字符串,而不是布尔值。

运算符

运算符是表示数学运算或比较的符号。+-= 等符号是运算符。布尔运算符比较两个表达式并产生真/假响应。代码片段支持数学运算符和布尔运算符。

除了用于乘法、除法、加法和减法的常规数学运算符外,您还可以使用以下运算符:

  • 模运算符 (%)
  • 幂/指数 (^)
  • 整数除法 (\)
  • 异或 (~)

常规数学运算顺序适用于所有表达式。括号中的任何内容首先作为子单元进行运算。指数/幂运算符的运算在后。乘法和除法运算次之,然后是加法和减法运算。在完成所有数学运算后,比较运算符最后进行运算。

布尔运算符

您可以在代码片段中使用以下布尔运算符。所有这些运算符都可用于数字字符串数字或字符串比较。字符串比较使用字母顺序来确定大于或小于。在比较中,A = 1,Z = 26。字符串比较区分大小写。

运算符符号 运算符名称 详细信息
= 等于 如果表达式的两边相等,则表达式的结果为 true (1),否则表达式的结果为 false (0)
!= 不等于 如果表达式的两边相等,则表达式的结果为 true (1),否则结果为 0 false (0)
> 大于

如果表达式的边小于边,则表达式结果为 true (1),否则为结果为 false (0)

>= 大于或等于

如果表达式的边小于或等于边,则表达式结果为 true (1),否则结果为 false (0)

< 小于

如果表达式的边小于边,则表达式结果为 true (1),否则为结果为 false (0)

<= 小于或等于

如果表达式的边小于或等于边,则表达式结果为 true (1),否则结果为 false (0)

& 如果所有子表达式的计算结果均为 true,则整个表达式结果为 true (1),否则结果为 false (0)
| 如果任一子表达式的计算结果为 true,则表达式结果为 true (1),否则结果为 false (0)

表达式中的等号

等号运算符 ( = ) 的含义不同,具体取决于您使用的表达式类型。

赋值语句中使用的表达式将表达式赋值为变量的值。这些语句中使用的等号表示将表达式右侧的值赋给左侧的变量。

在其他表达式中,等号表示相等的求值。例如,在代数表达式 x = 3 * (5 + 10) 中,等号的意思是 x 表示结果值来自代数表达式 3 * (5 + 10)。在这种情况下,x = 45。您可以在赋值语句中使用此代数表达式,将表达式的值赋给变量 x。但是,如果将相同的表达式用作布尔值,则根据 x 的值,它将求值为 true 或 false。

布尔表达式常用于 Studio 脚本中。如果在这些表达式中使用等号作为运算符,它将比较等号左侧的值与右侧的值以确定是否相等。如果您需要更改布尔表达式中使用的变量的值,请在 Snippet 操作中使用 ASSIGN 操作或 ASSIGN 语句。