第七十一章 Caché 函数大全 $WFIND 函数
通过值查找子字符串,并返回整数,指定其在字符串中的结束位置,从而识别代理对。
大纲
$WFIND(string,substring,position)
$WF(string,substring,position)
参数
- string 要搜索的目标字符串。它可以是变量名,数值,字符串文字或任何可解析为字符串的有效ObjectScript表达式。
- substring 要搜索的子字符串。它可以是变量名,数字值,字符串文字或任何可解析为字符串的有效ObjectScript表达式。
- position 可选-目标字符串中开始搜索的位置。它必须是一个正整数。
描述
$WFIND
返回一个整数,该整数指定字符串中子字符串的结束位置。在计算位置时,它将每个代理对视为一个字符。 $WFIND
在功能上与$FIND
相同,除了$WFIND
识别代理对。它将代理对视为单个字符。可以使用$WISWIDE
函数确定字符串是否包含代理对。
代理对是一对16位Caché字符元素,它们一起编码一个Unicode字符。代理对用于代表某些表意文字,这些表意文字用于中文,日文汉字和韩文汉字。 (大多数常用的中文,汉字和汉字字符由标准的16位Unicode编码表示。)代理对为日语JIS X0213:2004(JIS2004)编码标准和中文GB18030编码标准提供了Caché支持。
代理对由在十六进制范围D800至DBFF中的高阶16位字符元素和在十六进制范围DC00至DFFF中的低阶16位字符元素组成。
$WFIND
函数将代理对视为单个字符。 $FIND
函数将一个代理对计为两个字符。在所有其他方面,$WFIND
和$FIND
在功能上是相同的。但是,由于$FIND
通常比$WFIND
快,因此对于不太可能遇到代理对的所有情况,$FIND
是更可取的。
示例
以下示例显示$WFIND
如何将代理对作为返回值中的单个字符进行计数:
/// d ##class(PHA.TEST.Function).WFIND()
ClassMethod WFIND()
{
IF $SYSTEM.Version.IsUnicode() {
SET spair=$CHAR($ZHEX("D806"),$ZHEX("DC06"))
SET str="ABC"_spair_"DEF"
WRITE !,$FIND(str,"DE")," $FIND location in string"
WRITE !,$WFIND(str,"DE")," $WFIND location in string"
} ELSE {
WRITE "This example requires a Unicode installation of Caché"
}
}
DHC-APP>d ##class(PHA.TEST.Function).WFIND()
8 $FIND location in string
7 $WFIND location in string
以下示例显示$WFIND
如何在位置参数中将代理对作为单个字符进行计数:
/// d ##class(PHA.TEST.Function).WFIND1()
ClassMethod WFIND1()
{
IF $SYSTEM.Version.IsUnicode() {
SET spair=$CHAR($ZHEX("D806"),$ZHEX("DC06"))
SET str="ABC"_spair_"DEF"
WRITE !,$FIND(str,"DE",6)," $FIND location in string"
WRITE !,$WFIND(str,"DE",6)," $WFIND location in string"
} ELSE {
WRITE "This example requires a Unicode installation of Caché"
}
}
DHC-APP>d ##class(PHA.TEST.Function).WFIND1()
8 $FIND location in string
0 $WFIND location in string
网友评论