IBM FileNet P8, 5.2.1 版            

字串函數

本節包含適用於字串值之函數的簡要說明。

表 1. 函數及其用途的表格
函數 作用
convert 將字串轉換成另一種資料類型,或將另一種資料類型轉換成字串。
decode 將已編碼的字串表示式轉換回原始字串。
encode 將字串表示式轉換成無意義的字串。
hex 將包含十六進位字元碼的字串文字轉換成 ASCII 字串。
in_set 如果一個字串完全由另一個字串的字元所組成,則傳回布林值 true。
is_number 如果字串表示式評估為浮點或整數值,則傳回布林值 true。
is_time 如果字串表示式評估為有效的時間值,則傳回布林值 true。
len 傳回字串的長度。

lower

upper

將字串的字元變更為小寫或大寫。

ltrim

rtrim

trim

從字串的開頭 (ltrim)、結尾 (rtrim) 或兩端 (trim) 刪除空白或指定的字元。
max 從任何受支援資料類型的表示式清單中傳回最大值。
min 從任何受支援資料類型的表示式清單中傳回最小值。
numbertostring 使用指定的遮罩,將浮點或整數表示式轉換成字串表示式。
repeat 以指定的次數重複另一個字串,以建立字串。
strins 將一個字串插入另一個字串的指定位置中。
strloc 傳回字串內子字串的起始位置。 如果找不到子字串,此函數會傳回零。
stringtotime 使用指定的遮罩,將字串表示式轉換成時間表示式。
substitute 在字串內,將一個子字串取代成另一個子字串。
substr 傳回具有指定起始位置和長度的子字串。
timetostring 使用指定的遮罩,將時間表示式轉換成字串表示式。
translate 取代字串中的字元。
xmlencode 將 XML 欄位轉換成字串表示式。
xmldecode 將字串表示式轉換成 XML。

hex

此函數會將十六進位字元碼的字串文字轉換成 ASCII 字串。 hex 函數可以表示任何字元,但您通常將它用於沒有 ASCII 表示法的字元,如定位點。

在產生的字串中,每兩個十六進位數字代表一個字元。字串文字中的奇數十六進位字元會導致錯誤發生。請使用下列語法:
hex (hex_codes)
其中 hex_codes 是包含一個字元或一系列字元之十六進位碼的字串文字。
下列範例會傳回字串 abc,因為 61、62 和 63 是那些字元的十六進位碼。
hex ("616263")

translate

此函數會藉由將一個字串中的字元取代成您所指定的字元,以建立一個新字串。translate 函數對於編碼字元非常有用。

請使用下列語法:
translate (source_string, search_string,
replace_string)
其中:
表 2. translate 函數的參數及說明
參數 說明
source_string 包含要取代的字元之字串。
search_string source_string 內要取代的字元字串。 長度必須與 replace_string 相同。
replace_string 取代字元的字串。長度必須與 search_string 相同。

搜尋並取代是針對每個字元來進行。 如果搜尋字串為 "abc" 且取代字串為 "def",此函數會在新建字串中將 "a" 轉換成 "d",將 "b" 轉換成 "e",將 "c" 轉換成 "f"。

例如,針對下列值,
source_string 包含 "*123-#44-!999"
search_string 包含 "#*!-"
replace_string 包含 "XYZ&"
此函數會輸出下列新字串:
Y123&X44&Z999

請注意,來源字串、搜尋字串及取代字串的內容不會變更。

提示: 如果要搜尋並取代整個子字串,而非個別字元,請使用 substitute 函數。
下列範例使用 translate 函數,將字串從歐洲數字格式轉換成美國數字格式。
translate (str, ".,", ",.")

lower、upper

這些函數將字串中的所有字元分別轉換成小寫或大寫。請使用下列語法:
lower (string_exp)

upper (string_exp)
其中 string_exp 是要轉換的字串表示式。

in_set

此函數會比較兩個字串,如果第一個字串中的每個字元包含在第二個字串中的某個位置,則會傳回布林值 true。如果第一個字串至少有一個字元並未包含在第二個字串中,此函數會傳回 false 值。 兩個字串中的字元不必以相同順序出現;此外,第二個字串可以包含其他字元。

請使用下列語法:
in_set (subset_string, superset_string)
其中:
表 3. in_set 函數的參數及說明
參數 說明
subset_string 只包含子集字元的字串表示式。
superset_string subset_string 與其進行比較的字串表示式。
在下列範例中,
in_set (name, "abcdefghijklmnopqrstuvwxyz")
此函數會傳回 true,若
name = "jim"
則會傳回 false,若
name = "Fido"
name = "a.b"

len

此函數會計算字串表示式的實際(不是宣告)長度。它會提供表示式中包括空格在內的字元總數。 請使用下列語法:
len (string_expr)
其中 string_expr 是要計算長度的字串表示式。
在下列範例中,傳回的長度為 15。請注意,含括的引號不計入字元數內。
len ("Hamilton Burger")

repeat

此函數會以指定的次數重複給定的字串,以建立字串。 請使用下列語法:
repeat (string_expr, repeat_num)
其中:
表 4. repeat 函數的參數及說明
參數 說明
string_expr 要重複的字串表示式。
repeat_num 要重複 string_exp 的次數。
下列範例會輸出字串 abcdabcdabcdabcdabcd。
repeat ("abcd", 5)

strloc

子字串是來源字串的一部分;它可以小於或等於來源字串的長度。例如,GoodMornod MorniGood Morni 都是 Good Morning 的子字串。

使用 strloc 函數來找出特定子字串出現在來源字串中的位置。 此函數會傳回來源字串中子字串的起始字元位置。

如果子字串可以在來源字串中重複找到,此函數會傳回其第一個出現項目的起始位置。如果找不到子字串,或子字串比來源字串長,此函數會傳回零。

請使用下列語法:
strloc (source_string, sub_string)
其中:
表 5. strloc 函數的參數及說明
參數 說明
source_string 要在其中搜尋子字串的字串。
sub_string 要搜尋的字串。
此範例會傳回值 6,因為子字串開始於來源字串的位置 6。
strloc ("Good Morning", "Morning")

substr

此函數會從來源字串中擷取子字串,從而建立新字串。 您可以指定來源字串及開始擷取的字元位置。此外,您還可以選擇性提供要擷取的字元數;如果未提供此資訊,擷取作業會在來源字串結尾處停止。

請使用下列語法:
substr (source_string, start_pos {, length})
其中:
表 6. substr 函數的參數及說明
參數 說明
source_string 來源字串。
start_pos 擷取開始的字元位置。
length 要擷取的字元數(例如,擷取的字串長度)。
下列範例會傳回字串 Morning。請注意,含括的引號不視為字串的一部分。
substr ("Good Morning!", 6, 7)

此函數在超出字串長度的字串位置處也會擷取零長度字串(引號之間沒有字元的字串)。此用法對於將零長度字串當作邊緣條件的演算法很有幫助。您可以擷取從位置 1 到字串最後一個字元 +1 的字元;因此,位置 1 和字串長度 +1 為邊緣條件。

在下列情況下會發生執行時期錯誤:

strins

此函數會將一個字串插入另一個字串中,從而建立新字串。 來源字串和插入字串的值不會變更。請使用下列語法:
strins (source_string, insert_string, start_pos)
其中:
表 7. strins 函數的參數及說明
參數 說明
source_string 將與 insert_string 結合來產生新字串的字串。
insert_string 將與 source_string 結合來產生新字串的字串。
start_pos

source_string 中開始插入的位置;值的範圍從 1 到 source_string 長度 + 1。

如果指定的值小於 1 或大於 source_string + 1,則會發生執行時期錯誤。

在下列範例中,假設
insert_str = "Mr. Jones,"
以及
source_str = "Good morning, what a lovely day."
strins (source_str, insert_str, 15)
針對上面指定的值,此函數會傳回下列字串:
Good morning, Mr. Jones, what a lovely day.

substitute

此函數會藉由在指定的來源字串內將一個子字串取代成另一個子字串,以建立一個新字串。請使用下列語法:
substitute (source_string, unwanted_string,
replacement_string)
其中:
表 8. substitute 函數的參數及說明
參數 說明
source_string 包含 unwanted_string 的字串。
unwanted_string source_string 的子字串。
replacement_string 將取代 unwanted_string 來建立新字串的字串。
在下列範例中,TestString 內出現的每一個 abc 會取代為 wxyz。 取代作業由左向右進行。
substitute (TestString, "abc", "wxyz")
如果
TestString = "abcdabcd"
此函數會傳回下列新字串:
wxyzdwxyzd
請注意,來源字串、不需要的字串及取代字串的內容不會變更。
提示: 如果要搜尋並取代個別字元,而非子字串,請使用 translate 函數。

ltrim、rtrim 和 trim

這些函數會複製現有來源字串,並從新字串的開頭 (ltrim)、結尾 (rtrim) 或兩端 (trim) 刪除空白或指定的字元,以建立一個新字串。無論如何,來源字串都會維持不變。

請對所有三個函數使用下列語法:
ltrim (string_expr{, trim_char}opt)

rtrim (string_expr{, trim_char}opt)

trim (string_expr{, trim_char}opt)
其中:
表 9. trim、ltrim 和 rtrim 函數的參數及說明
參數 說明
string_expr 要複製的來源字串表示式。
trim_char

選用參數,用於指定要從新字串中刪除的字元。如果未指定此參數,則會刪除空白。

視函數而定,刪除作業會從新字串開頭、結尾或兩端開始,直到找到 trim_char 中未指定的字元(或非空白字元)為止。

下列範例會從 LastName 中刪除所有前導空白。在範例中,
LastName = "Smith"
傳回的新字串為
"Smith"
ltrim (LastName)
下列範例會從 Status 字串尾端刪除 & 字元。如果
Status = "OpenXY&Z&&&&"
傳回的新字串為
"OpenXY&Z"
rtrim (Status, "&")
下列範例會從 AccountName 中刪除所有尾端數字。
rtrim (AccountName, "0123456789")

is_number

此函數決定指定的字串表示式評估為浮點或整數值。如果整個字串(而不僅是子字串)評估為浮點或整數,則 is_number 函數會傳回布林值 true,否則會傳回 false。

請使用下列語法:
is_number (expr)
其中 expr 是字串表示式。
下列三個範例分別傳回 true、false 及 false。
is_number ("123.4")

is_number ("no")

is_number ("abc63j")

is_time

此函數決定指定的字串表示式是否評估為所指定格式的時間值。如果整個字串(而不僅是子字串)評估為所指定格式的時間,則 is_time 函數會傳回布林值 true;否則,此函數傳回值 false。

請使用下列語法:
is_time (str_expr, date_time_mask)
其中:
表 10. is_time 函數的參數及說明
參數 說明
str_expr 字串表示式。
date_time_mask 日期/時間遮罩,其指定 str_expr 必須使用才能讓 is_time 傳回 true 值的格式。
在下列範例中,第一個範例傳回 false,第二個範例傳回 true。在這兩個範例中,convert 函數用來將字串表示式轉換成 Time 資料類型,以便評估 is_time 函數。
is_time ("nov121995", "mm/dd/yyyy")

is_time ("11/12/1995", "mm/dd/yyyy")

timetostring

此函數使用您所指定的格式,將時間表示式轉換成字串表示式。請使用下列語法:
timetostring (time_expr, date_time_mask)
其中:
表 11. timetostring 函數的參數及說明
參數 說明
time_expr Time 類型的表示式。
date_time_mask 決定 timetostring 函數輸出格式的日期/時間遮罩
下列範例將系統時間轉換成字串。此字串使用指定的日期/時間遮罩來格式化。
timetostring (systemtime(), "mm/dd/yyyy hh:tt:ss am")
在上述範例中,如果 systemtime() 等於 1985 年 7 月 1 日下午 12 點 45 分 6 秒,則字串輸出如下:
7/1/1985 12:45:06 pm

請參閱 systemtime() 函數的相關資訊。

stringtotime

此函數使用您所指定的格式,將字串轉換成時間。請使用下列語法:
stringtotime (string_expr, date_time_mask)
其中:
表 12. stringtotime 函數的參數及說明
參數 說明
string_expr String 類型的表示式。
date_time_mask 指定轉換所用時間格式的日期/時間遮罩
在下列範例中,HostTime 是字串變數。
stringtotime (HostTime, "mon. dd, yyyy hh:tt:ss am")
如果
HostTime = "Jul. 1, 1985 12:45:06 pm"
,則產生的輸出為等同於 1985 年 7 月 1 日下午 12 點 45 分 6 秒的時間值。

encode、decode

這些函數會將字串轉換成無意義的字串,以便偽裝內容。 encode 和 decode 必須位於相同的工作流程中。

decode 函數可用來轉換含有多重編碼字串的字串表示式。
encode (string_expr)

decode (string_expr)
其中:
表 13. decode 和 encode 函數的參數及說明
參數 說明
string_expr String 類型的表示式。字串不能是文字。


前次更新: 2015 年 10 月
bpfe012.htm

© Copyright IBM Corp. 2015.