運算式

本説明頁面上的資訊同時適用於 CXone StudioDesktop Studio

運算式是指令碼中用於比較值或產生值的任何內容。例如,如果以比較數值或得出數值的方式使用,則 X = 5Y = dogZ = "{var1}" 都可以是運算式。例如,X = 5 會將變數 X 的值與 5 進行比較。同樣,Z = "{var1}" 會將變數 Z 的值與變數 var1 的當前值進行比較。

前面的範例也可以是賦值語句。賦值語句將等號右邊的值賦給左邊的變數。變數賦值不是運算式。

運算式可用於:

  • 執行數學或代數計算。
  • 比較兩個值,並根據比較結果執行動作。
  • 根據運算式的真假值做出邏輯判斷。

運算式中比較的值可以由字母、數字或兩者的組合組成。它們還可以包含變數。在 Studio 中,有三種運算式:數字運算式字串運算式布爾值運算式

嘗試一下

下載運算式範例指令碼並將 匯入Studio中。本說明頁面中的範例可在範例指令碼中的 Snippet 動作中找到。您可以打開 Snippet editor 視窗並運行 偵錯程式,查看每個範例如何工作。

數字運算式

數字運算式只包括數字和數學或布爾值 運算子,如 + - 等。如果變數包含計算中使用的數值,它們還可以包括變數引用。

數字運算式用於 snippet 和配置 Studio 動作的屬性。例如,在 IF 動作中,您可以在 Expression 屬性中配置要評估的運算式,作為動作的決策機制。您可以使用 IF 關鍵字在 snippet 中完成同樣的動作。

數字運算式語法

數字運算式不能用引號括起來。這包括數學和布爾值Closed 具有兩種可能值的子了類型:true 和 false。運算式。如果用引號括起一個數字運算式,則會將其視為文字。例如,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() 函數零預留位置 將零加回值中。

字串運算式

字串運算式包括英數和特殊字元,如 #@ 等。字串運算式的語法與為變數指派字串值的語法類似:

  • 在 snippet 中,運算式的字串值必須始終用單引號或雙引號括起來。這與字串值相同
  • 要在字串運算式中使用變數替換,請用大括號括住變數名。
  • 某些字元(如雙引號)被視為代碼。要在字串值中包含這些字元,必須使用轉義序列

字串比較

字串可以作為布爾值運算式中的值進行求值。例如,您可以在 IF 語句中使用以下運算式:

客戶 = "Grendel Cainson"

客戶包含精確值 Grendel Cainson 時,結果為 true。對於任何其他值,結果均為 false

在字串比較中可以使用大於和小於 運算子。在這種比較中,每個字母字元都被賦值(A = 1 和 Z = 26)。指令碼開始比較第一個字元。如果不相同,則以字母表中較後的字母開頭的字元較大。例如,在比較 apple > banana 時,結果是 false。這是因為 bananaapple 大,因為 b 在字母表中排在後面。

如果第一個字元相同,指令碼會比較第二個字元。如果不相同,則停止比較。如果第二個字元相同,指令碼將繼續比較字元,直到找到一對不同的字元。例如,在比較 grapes > grapey 時,指令碼會比較每個字元,直到最後。結果是,因為 grapeygrapes大,因為 y 在字母表中比 s 靠後。

在大於等於或小於等於的比較中,套用相同的規則。如果指令碼發現運算子左邊的字串與右邊的字串相同,則運算式的值為 True

字串比較區分大小寫。

字串中的轉義序列

Studio支援字串常數中的轉義序列。轉義序列允許您在字串中包含某些特殊字元。雙引號或左大括號等字元被識別為代碼。當字串中包含這些字元時,編譯器會以非字面代碼的含義而不是字面值來解釋它們。使用 Escape 序列可以在字串中包含這些字元。如果在字串中包含這些字元而不使用轉義序列,輸出結果將與您預期的不同,並可能導致錯誤。

您不需要將轉義序列新增至包含轉換 XML 或 JSON 的字串。自動為需要轉義序列的字元新增轉義序列。

在使用轉義序列的字串前加上美元符號($):$"...".在雙引號內,您可以使用以下任何一個轉義序列:

序列 詳細資料
\" 嵌入雙引號。
\' 嵌入單引號。
\t 嵌入 Tab (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 支援使用布爾值Closed 具有兩種可能值的子了類型:true 和 false。運算式。它們可用於在指令碼中建立決策邏輯。由於布爾值運算式的評估結果要麼為 True 要麼為 False,因此您可以使用它們來建立必須滿足的條件,以決定採取哪種路徑。如果條件滿足,指令碼就會選擇該分支,但如果條件不滿足,指令碼就會選擇另一條分支。

在布爾值運算式中,可以使用很多 運算子。這可以讓您定義符合指令碼需要的邏輯條件語句。例如,您可以使用等號 (=) 檢查一個值是否與另一個值相同,或者使用大於運算子 (>) 檢查一個值是否大於另一個值。

您可以在 IfSnippet 等動作中使用布爾值運算式(CXone Studio中的説明頁面:IfSnippet)。可以在 snippet 中使用的許多語句,使用布爾值運算式作為決策機制,包括:

  • IF
  • IF ... ELSE
  • SELECT

下面的範例展示了在 snippet 中使用布爾值運算式和 IF...ELSE 語句:

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

布爾值運算式還可以在指令碼中與動作一起使用。下圖顯示了使用 Studio 動作的相同 IF...ELSE 語句。您可以在運算式範例指令碼中測試此範例。

本頁面此部分的布爾值範例的指令碼版本。

啟用或禁用設定的布爾值

指令碼中有時會使用布爾值來啟用或禁用 CXone 中的設定。在這種情況下,您需要為變數指派一個布爾值。要啟用設定,請賦值1。要禁用設定,請賦值0

單詞和數字都是有效的布爾值。但是,請查看您正在使用的 Studio 動作的線上說明,看看該動作的屬性是否有首選值。無論哪種情況,使用的值都不能用引號括起來。如果用引號括住數值,指令碼會將其視為文字字串,而不是布爾值。

運算子

運算子是表示數學運算或比較的符號。+-= 等符號都是運算子。布爾值運算子會比較兩個運算式並得出真/假回應。Snippet 同時支援數學運算子和布爾值運算子。

除了用於乘法、除法、加法和減法的常規數學運算子外,您還可以使用這些運算子:

  • 模運算子 (%)
  • 冪/指數 (^)
  • 整除 (\)
  • 異或 (~)

常規數學運算順序適用於所有運算式。括號中的任何內容作為子單元首先進行運算。指數/冪運算子第二個被運算。先運算乘法和除法,再運算加法和減法。在完成所有數學運算後,比較運算子最後被運算。

布爾運算子

您可以在 Snippet 中使用以下布爾運算子。所有這些運算子都可以用於 數字字串數字或字串的比較。字串比較採用字母順序來確定是大於還是小於。在比較中,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。但是,如果將同樣的運算式用作布爾值運算式,它的值要麼為 True,要麼為 False,而這具體取決於 x 的值。

布爾值運算式常用於 Studio 指令碼。如果在這些運算式中使用等號作為運算子,則它會將等號左邊的值與右邊的值進行比較,以確定是否相等。如果需要變更布爾值運算式中使用的變數值,請使用 ASSIGN 動作或 Snippet 動作中的 ASSIGN 語句。