第七十四章 Caché 函数大全 $WREVERSE 函数

251 阅读1分钟

第七十四章 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