第七十四章 Caché 函数大全 $WREVERSE 函数
以相反的顺序返回字符串中的字符,识别出代理对。
大纲
$WREVERSE(string)
$WRE(string)
参数
- string 字符串或表达式,其值为字符串。
描述
$WREVERSE以相反的顺序返回字符串中的字符。 $WREVERSE在功能上与$REVERSE相同,除了$WREVERSE识别代理对。可以使用$WISWIDE函数确定字符串是否包含代理对。
代理对是一对16位Caché字符元素,它们一起编码一个Unicode字符。代理对用于代表某些表意文字,这些表意文字用于中文,日文汉字和韩文汉字。 (大多数常用的中文,汉字和汉字字符由标准的16位Unicode编码表示。)代理对为日语JIS X0213:2004(JIS2004)编码标准和中文GB18030编码标准提供了Caché支持。
代理对由在十六进制范围D800至DBFF中的高阶16位字符元素和在十六进制范围DC00至DFFF中的低阶16位字符元素组成。
$WREVERSE函数将代理对视为单个字符。 $REVERSE函数将代理对视为两个字符。在所有其他方面,$WREVERSE和$REVERSE在功能上是相同的。但是,由于$REVERSE通常比$WREVERSE快,因此对于不太可能遇到代理对的所有情况,$REVERSE是更可取的。
示例
下面的示例显示$WREVERSE如何将代理对视为单个字符:
/// d ##class(PHA.TEST.Function).WREVERSE()
ClassMethod WREVERSE()
{
IF $SYSTEM.Version.IsUnicode() {
SET spair=$CHAR($ZHEX("D806"),$ZHEX("DC06"))
SET str="AB"_spair_"CD"
WRITE !,"String before reversing:"
ZZDUMP str
SET wrev=$WREVERSE(str)
WRITE !,"$WREVERSE did not reverse surrogate pair:"
ZZDUMP wrev
SET rev=$REVERSE(str)
WRITE !,"$REVERSE reversed surrogate pair:"
ZZDUMP rev
} ELSE {
WRITE "This example requires a Unicode installation of Caché"
}
}
DHC-APP>d ##class(PHA.TEST.Function).WREVERSE()
String before reversing:
0000: 0041 0042 D806 DC06 0043 0044 AB??CD
$WREVERSE did not reverse surrogate pair:
0000: 0044 0043 D806 DC06 0042 0041 DC??BA
$REVERSE reversed surrogate pair:
0000: 0044 0043 DC06 D806 0042 0041 DC??BA