第十六章 Caché 函數大全 $FIND 函數 第十六章 Caché 函數大全 $FIND 函數 大綱 描述 示例 注意

第十六章 Caché 函數大全 $FIND 函數

按值查找子字符串,並返回一個整數,指定其在字符串中的結束位置。

大綱

$FIND(string,substring,position)
$F(string,substring,position)

參數

  • string 要搜索的目標字符串。它可以是變量名,數值,字符串文字或任何有效的CachéObjectScript表達式,都可以解析爲字符串。
  • substring 要搜索的子字符串。它可以是變量名,數值,字符串文字或任何有效的CachéObjectScript表達式,都可以解析爲字符串。
  • position 可選-目標字符串中開始搜索的位置。它必須是一個正整數。

描述

$FIND返回一個整數,該整數指定字符串中子字符串的結束位置。 $FIND在字符串中搜索子字符串。 $FIND區分大小寫。如果找到子字符串,則$FIND返回子字符串後第一個字符的整數位置。如果未找到子字符串,則$FIND返回值0。

因爲$FIND返回字符在子字符串之後的位置,所以當子字符串是與字符串$FIND的第一個字符匹配的單個字符時,返回2。當子字符串是空字符串(“”)時,$FIND返回1。

可以包括位置選項以指定搜索的起始位置。如果position大於字符串中的字符數,則$FIND返回值0。

$FIND計算characters,而不是bytes。因此,它可以與包含8位或16位(Unicode)字符的字符串一起使用。

示例

例如,如果變量var1包含字符串“ABCDEFG”,變量var2包含字符串“BCD”,則下面的$find返回值5,指示var2字符串後面的字符(“E”)的位置:

DHC-APP>SET var1="ABCDEFG",var2="BCD"
 
DHC-APP>WRITE $FIND(var1,var2)
5

下面的示例返回4,即字符的位置緊靠子字符串“FOR”的右側。

DHC-APP>SET X="FOREST"
 
DHC-APP>WRITE $FIND(X,"FOR")
4

在以下示例中,$FIND將搜索不在字符串中的子字符串、null子字符串以及作爲字符串第一個字符的子字符串。這些示例分別返回0、1和2:

DHC-APP>WRITE !,$FIND("aardvark","z")
 
0
DHC-APP>WRITE !,$FIND("aardvark","")
 
1
DHC-APP>WRITE !,$FIND("aardvark","a")
 
2

以下示例顯示了字符串爲空字符串時發生的情況:

DHC-APP>WRITE !,$FIND("","z")
 
0
DHC-APP>WRITE !,$FIND("","")
 
1

下面的示例返回14,即字符的位置緊靠X中第七個字符後第一個出現的“R”的右側。

DHC-APP>SET X="EVERGREEN FOREST",Y="R"
 
DHC-APP>WRITE $FIND(X,Y,7)
14

在下面的示例中,$FIND在字符串中的最後一個字符之後開始搜索。它返回零(0):

DHC-APP>SET X="EVERGREEN FOREST",Y="R"
 
DHC-APP>WRITE $FIND(X,Y,20)
0

以下示例使用$FIND$REVERSE從字符串末尾執行搜索操作。此示例在一行文本中查找字符串的最後一個示例。它將該字符串的位置返回爲33:

DHC-APP>SET line="THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG."
 
DHC-APP>SET position=$LENGTH(line)+2-$FIND($REVERSE(line),$REVERSE("THE"))
 
DHC-APP>WRITE "The last THE in the line begins at ",position
The last THE in the line begins at 33

下面的示例使用名稱間接返回6,即緊靠子字符串“THIS”右側的字符位置:

DHC-APP>SET Y="x",x="""THIS IS A TEST"""
 
DHC-APP>WRITE $FIND(@Y,"THIS")
6

注意

FIND,EXTRACT, PIECE,LIST

  • $FIND按值查找子字符串並返回位置。
  • $EXTRACT按位置定位子字符串並返回子字符串值。
  • $PIECE通過分隔符字符或分隔符字符串定位子字符串,並返回子字符串值。
  • $LIST對特殊編碼的字符串進行操作。它通過子字符串計數查找子字符串並返回子字符串值。

$FIND$EXTRACT$LENGTH$PIECE函數對標準字符串進行操作。各種$LIST函數對與標準字符串不兼容的編碼字符串進行操作。唯一的例外是$LIST的一個參數和兩個參數形式,它們以編碼字符串作爲輸入,但將單個元素值作爲標準字符串輸出。

代理對

$FIND無法識別代理對。代理對用於表示某些中文字符並支持日語JIS2004標準。可以使用$WISWIDE函數確定字符串是否包含代理對。 $WFIND函數可以識別並正確解析代理對。 $FIND$WFIND相同。但是,由於$FIND通常比$WFIND快,因此對於不太可能遇到代理對的所有情況,$FIND是更可取的。

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