文章目录
第七十一章 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