第三十五章 Caché 函數大全 $LISTTOSTRING 函數 第三十五章 Caché 函數大全 $LISTTOSTRING 函數 大綱 描述 參數 示例

第三十五章 Caché 函數大全 $LISTTOSTRING 函數

從列表中創建一個字符串。

大綱

$LISTTOSTRING(list,delimiter,flag)
$LTS(list,delimiter,flag)

參數

  • list Caché列表,使用$LISTBUILD$LISTFROMSTRING創建,或使用$LIST從另一個列表中提取。
  • delimiter 可選-用於分隔子字符串的定界符。將定界符指定爲帶引號的字符串。如果未指定定界符,則默認爲逗號()字符。
  • flag 可選—一個布爾值,指定如何處理省略的列表元素。 0發出<NULL VALUE>錯誤。 1爲該元素插入一個空字符串。默認值爲0。

描述

$LISTTOSTRING獲取Caché列表並將其轉換爲字符串。在結果字符串中,列表的元素由定界符分隔。

列表以不使用分隔符的編碼格式表示數據。因此,列表可以包含所有可能的字符,並且非常適合於位串數據。 $LISTTOSTRING將此列表轉換爲帶有定界元素的字符串。它預留了一個指定字符(或字符串)作爲定界符。可以使用$PIECE函數處理這些定界的元素。

注意:此處指定的定界符不得出現在源數據中。 Caché在用作分隔符的字符和與數據字符相同的字符之間沒有區別。

參數

list

Caché列表,其中包含一個或多個元素。使用$LISTBUILD創建一個列表,或使用$LIST從另一個列表中提取一個列表。

如果list參數中的表達式未求值爲有效列表,則會發生<LIST>錯誤。

DHC-APP>SET x=$CHAR(0,0,0,1,16,27,134,240)
 
DHC-APP>SET a=$LISTTOSTRING(x,",")
 
SET a=$LISTTOSTRING(x,",")
^
<LIST>

delimiter

用於在輸出字符串中定界子字符串的字符(或字符串)。它可以是數字或字符串文字(用引號引起來),變量名或計算結果爲字符串的表達式。

通常,分隔符是指定的字符,在字符串數據中從未使用過,但僅留作分隔符,用作分隔子字符串的分隔符。分隔符也可以是多字符字符串,可以在字符串數據中使用其各個字符。

如果未指定定界符,則默認定界符爲逗號()字符。可以指定一個空字符串(“”)作爲分隔符。在這種情況下,子字符串被串聯而沒有定界符。要將引號字符指定爲定界符,請兩次指定引號字符(“”“”)或使用$CHAR(34)

flag

一個布爾標誌,用於指定如何處理列表中省略的元素。在下面的示例中,$LISTBUILD創建一個帶有省略元素的列表,並指定了flag = 1選項來處理此列表元素:

DHC-APP>SET colorlist=$LISTBUILD("Red",,"Blue")
 
DHC-APP>WRITE $LISTTOSTRING(colorlist,,1)
Red,,Blue

DHC-APP>WRITE $LISTTOSTRING(colorlist,,0)
 
WRITE $LISTTOSTRING(colorlist,,0)
^
<NULL VALUE>

如果省略標誌選項或將其設置爲0,則$LISTTOSTRING將生成 <NULL VALUE> 錯誤。

請注意,如果flag = 1,則具有空字符串值的元素與省略的元素是無法區分的。因此 $LISTBUILD("Red","","Blue")$LISTBUILD("Red",,"Blue")將返回相同的$LISTTOSTRING值。如CachéSQL參考中所述,此flag = 1行爲與CachéSQL中的$LISTTOSTRING實現兼容。

示例

下面的示例創建一個包含四個元素的列表,然後將其轉換爲包含由冒號(:)字符分隔的元素的字符串:

DHC-APP>SET namelist=$LISTBUILD("Deborah","Noah","Martha","Bowie")
 
DHC-APP>WRITE $LISTTOSTRING(namelist,":")
Deborah:Noah:Martha:Bowie

下面的示例創建一個包含四個元素的列表,然後將其轉換爲一個用* sp *字符串分隔的元素的字符串:

DHC-APP>SET namelist=$LISTBUILD("Deborah","Noah","Martha","Bowie")
 
DHC-APP>WRITE $LISTTOSTRING(namelist,"*sp*")
Deborah*sp*Noah*sp*Martha*sp*Bowie

以下示例創建一個列表,其中包含一個省略的元素和一個具有空字符串值的元素。$LISTTOSTRING將其轉換爲帶有由冒號(:)字符分隔的元素的字符串。由於省略了元素,因此需要flag = 1來避免錯誤。但是,當flag = 1時,省略的元素和空字符串值是無法區分的:

DHC-APP>SET namelist=$LISTBUILD("Deborah",,"","Bowie")
 
DHC-APP>WRITE $LISTTOSTRING(namelist,":",1)
Deborah:::Bowie

$LISTVALID考慮以下所有有效列表。在flag = 1的情況下,$LISTTOSTRING返回所有字符串的空字符串(“”):

/// d ##class(PHA.TEST.Function).LISTTOSTRING()
ClassMethod LISTTOSTRING()
{
    WRITE "1",$LISTTOSTRING("",,1),!
    WRITE "2",$LISTTOSTRING($LB(),,1),!
    WRITE "3",$LISTTOSTRING($LB(UndefinedVar),,1),!
    WRITE "4",$LISTTOSTRING($LB(""),,1)
}

DHC-APP>d ##class(PHA.TEST.Function).LISTTOSTRING()
1
2
3
4

對於flag = 0,$LISTTOSTRING僅針對以下內容返回空字符串(“”):

DHC-APP>WRITE "1",$LISTTOSTRING("",,0),!
1
 
DHC-APP>WRITE "4",$LISTTOSTRING($LB(""),,0)
4

其他的會生成<NULL VALUE>錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章