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?

$ZSTRIP

指定された文字列から、文字のタイプと文字を削除します。

Synopsis

$ZSTRIP(string,action,remchar,keepchar)

パラメータ

string 削除される文字列。
action string から削除する対象。action は、アクション・コードと、それに続く 1 つまたは複数のマスク・コードで構成されます。remchar を指定すると、マスク・コードはオプションとなります。action は引用符付き文字列として指定されます。
remchar オプション — 削除する特定の文字の値の文字列。action がマスク・コードを含まない場合、remchar は削除する文字をリスト表示します。action がマスク・コードを含む場合、remcharaction パラメータのマスク・コードで保護されていない、その他の削除対象文字を表示します。
keepchar オプション削除されない特定の文字の値の文字列。action パラメータのマスク・コードで削除が指定された文字から指定します。マスク・コードを指定してから、keepchar を指定する必要があります。

概要

$ZSTRIP 関数は、指定された string から文字のタイプおよび個別の文字の値を削除します。action パラメータでは、実行する削除処理の種類を示すアクション・コードを指定し、(オプションで) 削除する文字のタイプを指定するマスク・コードを指定します。個別の文字の値を指定して、remchar パラメータを使用して削除することができます。$ZSTRIP は、文字のタイプ (すべての小文字など) とリストされた文字の値 ("AEIOU" の文字など) の両方を同時に削除できます。オプションで remchar パラメータおよび keepchar パラメータを使用して、削除または保持する文字の値を個別に指定することにより、action パラメータのマスク・コードの効果を変更できます。

詳細は、"Caché ObjectScript の使用法" の "パターン・マッチング演算子" の章を参照してください。文字のタイプ、文字の順序、および文字の範囲の選択には、正規表現関数である $LOCATE および $MATCH を使用することもできます。

パラメータ

action

削除する文字を示す文字列。アクション・コードとして指定され、オプションで 1 つまたは複数のマスク・コードを後に付けることができます。

アクション・コード

* マスク・コード (複数可) に一致するすべての文字を削除します
< マスク・コード (複数可) に一致する先頭の文字を削除します
> マスク・コード (複数可) に一致する末尾の文字を削除します
<> マスク・コード (複数可) に一致する先頭および末尾の文字を削除します
= マスク・コード (複数可) に一致する繰り返し文字を削除します。文字の繰り返しを検出すると、このコードは 1 つのインスタンスを残して重複する文字を削除します。このコードは、隣接して重複する文字のみを削除します。したがって、"aaaaaabc" から "a" を削除すると "abc" となりますが、"abaca" から "a" を削除しても文字列 "abaca" がそのまま返されます。重複文字のテストでは、大文字と小文字を区別します。
<=> マスク・コード (複数可) に一致する先頭、末尾、および繰り返し文字を削除します

アクション・コードは、* 文字または単一の <、>、もしくは = 文字の任意の組合せで構成できます。

文字のタイプを削除するには、action 文字列がアクション・コードと、それに続く 1 つまたは複数のマスク・コードで構成されている必要があります。特定の文字の値を削除するには、マスク・コードを省略して、remchar 値を指定します。マスク・コードと remchar 値は両方指定することができます。マスク・コードも remchar 値も指定しない場合、$ZSTRIPstring を返します。

マスク・コード

E すべてを削除します
A すべてのアルファベット文字を削除します
P 空白スペースと、句読記号文字を削除します
C 制御文字 (0-31、127-159) を削除します
N 数字を削除します(数値文字列は、$ZSTRIP の適用前には、キャノニック形式に変換されないことに注意してください)。
L アルファベットの小文字を削除します
U アルファベットの大文字を削除します
W 空白を削除します ($C(9)、$C(32)、$C(160))

マスク・コードは大文字でも小文字でも指定できます。

マスク・コード文字の前に単項否定演算子 (') を置くことで、このタイプの文字を削除しないように指定することができます。単項否定演算子マスク・コードを指定する前に、単項否定演算子を持たないマスク・コードを少なくとも 1 つ指定する必要があります。単項否定演算子を持たないマスク・コードはすべて、単項否定演算子を持つマスク・コードより前に置く必要があります。

remchar

削除する特定の文字。引用符付きの文字列として指定します。これらの remchar 文字は、任意の順序で指定できます。重複してもかまいません。

マスク・コードを指定しない場合、$ZSTRIPaction パラメータを remchar 文字 (複数可) に適用します。マスク・コードを指定する場合、削除する文字を remchar で 1 つまたは複数追加して指定します。例えば、action パラメータで、すべての数字 ("*N") だけでなく、"E" (科学的記数法を表すために使用されるもの) の文字も削除する場合、2 番目の $ZSTRIP で示すように、文字列 "E" を remchar パラメータで追加します。

   SET str="first:123 second:12E3"
   WRITE $ZSTRIP(str,"*N"),!
   WRITE $ZSTRIP(str,"*N","E")

keepchar

削除しない特定の文字。例えば、すべての空白とアルファベット (*WA) を削除して、大文字の M を残す場合は、文字列 “M” を keepchar パラメータで追加します。

以下の例では、数値文字をすべて削除します。数値文字列はキャノニック形式に変換されないので、以下のように、+ および E の文字は削除されません。

   SET str="+123E4"
   WRITE $ZSTRIP(str,"*N")

これは、+E を返します。

以下の例においては、最初の $ZSTRIP では句読点文字すべてが削除され、2 番目の $ZSTRIP では空白文字を除くすべての句読点文字が削除されます。

   SET str="ABC#$%^ DEF& *GHI***"
   WRITE $ZSTRIP(str,"*P"),!
   WRITE $ZSTRIP(str,"*P'W")

以下の例では、英字の小文字を除く ('L) すべての文字が削除されます。この例では remchar パラメータを使用して小文字 x のみを削除し、それ以外の小文字は保存します。

   SET str="xXx-Aa BXXbx Cxc Dd xxEeX^XXx"
   WRITE $ZSTRIP(str,"*E'L","x")

これは、abcde を返します。

以下の例では、英字の小文字を除く ('L) すべての文字が削除されます。この例では、remchar パラメータ値を指定していませんが (区切りのコンマは指定しています)、大文字の A、B、および C を残すために keepchar パラメータは指定しています。

   SET str="X-Aa BXXb456X CXc Dd XXEeX^XFFFfXX"
   WRITE $ZSTRIP(str,"*E'L",,"ABC")

これは、AaBbCcdef を返します。

以下の例では、マスク・コードを指定していませんが、英字の “X” および “x” が文字列内に出現した場合には、それらを削除するよう指定しています。文字列内の他の文字はすべて返されます。

   SET str="+x $1x,x23XX4XX.X56XxxxxxX"
   WRITE $ZSTRIP(str,"*","Xx")

これは、+ $1,234.56 を返します。

以下の例では、マスク・コードを指定していませんが、先頭および末尾の文字として “x” を削除すること、および繰り返しの “x” が文字列内で出現した場合、それを削除することを指定しています。

   SET str="xxxxx00xx0111xxx01x0000xxxxx"
   WRITE $ZSTRIP(str,"<=>","x")

これは、00x0111x01x0000 を返します。

以下の例では、空白文字および英字の小文字を除くすべての数値文字、アルファベット文字、および句読点文字を削除します。単項否定演算子を持たないマスク・コードはすべて、単項否定演算子を持つマスク・コードよりいずれも前に置く必要があることに注意してください。

   SET str="Aa66*&% B&$b Cc987 #Dd Ee"
   WRITE $ZSTRIP(str,"*NAP'W'L")

これは、a b c d e を返します。

以下の例では、マスク・コード A (すべてのアルファベット文字) に一致する先頭文字、末尾文字、および繰り返し文字を削除します。

   SET str="ABC123DDDEEFFffffGG5555567HI JK"
   WRITE $ZSTRIP(str,"<=>A")

これは、123DEFfG5555567HI を返します。$ZSTRIP はマスク (1) に含まれないタイプの文字に遭遇するまで、先頭文字 (ABC) を削除し、かつ非マスク文字 (空白) に遭遇するまで、文字列の最後から末尾文字を削除しています。マスク・タイプの繰り返し文字は、出現回数が 1 回に (DDDEE = DE) 削減されています。繰り返しテストは大文字と小文字が区別されることに注意してください (FFffff = Ff)。マスク・タイプ (55555) ではない繰り返し文字は、影響を受けません。

以下の例では、16 進数字 0 ~ 9 および A ~ F を除いたすべての文字を削除します。

   SET str="123$ GYJF870B-QD  @#%+"
   WRITE $ZSTRIP(str,"*E'N",,"ABCDEF")

これは、123F870BD を返します。

関連項目

FeedbackOpens in a new tab