Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$WLENGTH

サロゲート・ペアを認識して、文字列の文字数を返します。

Synopsis

$WLENGTH(string)
$WL(string)

パラメータ

string 文字列または文字列に評価する式

説明

$WLENGTH は、string の文字数を返します。$WLENGTH$LENGTH と機能的に同じですが、$WLENGTH がサロゲート・ペアを認識する点が異なります。サロゲート・ペアを単一の文字として認識します。$WISWIDE 関数を使用して、文字列にサロゲート・ペアが含まれているかどうかを判断することができます。

サロゲート・ペアは、単一の Unicode を一緒にエンコードする 16 ビットの Caché 文字要素のペアです。サロゲート・ペアは、中国語、日本語の漢字、韓国語のハンジャ文字で使用されている特定の表意文字を表すために使用されます(頻繁に使用される中国語、漢字、およびハンジャ文字は、標準 16 ビットの Unicode エンコードで表されます)。サロゲート・ペアにより、Caché は日本語 JIS X0213:2004 (JIS2004) エンコーディング標準および中国語 GB18030 エンコーディング標準をサポートできます。

サロゲート・ペアは、16 進数の D800 ~ DBFF の範囲の高位 16 ビット文字要素と、16 進数の DC00 ~ DFFF の範囲の下位 16 ビット文字要素で構成されます。

$WLENGTH 関数は、サロゲート・ペアを単一の文字としてカウントします。$LENGTH 関数は、サロゲート・ペアを 2 文字としてカウントします。その他の点では、$WLENGTH$LENGTH は機能的に同じです。ただし、$LENGTH は通常 $WLENGTH より高速なため、サロゲート・ペアが出現しない場合は常に $LENGTH が推奨されます。

文字列の長さの詳細は、$LENGTH 関数を参照してください。

以下の例は、$WLENGTH が単一の文字としてサロゲート・ペアをカウントする方法を示します。

  IF $SYSTEM.Version.IsUnicode()  {
  SET spair=$CHAR($ZHEX("D806"),$ZHEX("DC06"))
  SET str="AB"_spair_"CD"
  WRITE !,$LENGTH(str)," $LENGTH characters in string"
  WRITE !,$WLENGTH(str)," $WLENGTH characters in string"
  }
  ELSE {WRITE "This example requires a Unicode installation of Caché"} 

関連項目

FeedbackOpens in a new tab