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?

$REPLACE

入力文字列の文字列単位の部分文字列の置換で構成される新しい文字列を返します。

Synopsis

$REPLACE(string,oldsub,newsub,start,count,case)

パラメータ

string ソース文字列。数値、文字列リテラル、変数名、あるいは任意の有効な ObjectScript 式を使用できます。string が空文字列 ("") の場合、$REPLACE は空文字列を返します。
oldsub string 内で検索する部分文字列。数値、文字列リテラル、変数名、あるいは任意の有効な ObjectScript 式を使用できます。oldsub が空文字列 ("") の場合、$REPLACEstring を返します。
newsub stringoldsub のインスタンスと置換される置換部分文字列。数値、文字列リテラル、変数名、あるいは任意の有効な ObjectScript 式を使用できます。newsub が空文字列 ("") の場合、$REPLACEoldsub の出現箇所を削除して string を返します。
start オプション — 部分文字列の検索を開始する string 内の文字カウント位置。文字列は 1 からカウントされます。0、負の数字、非数値文字列または空の文字列は、1 と同じです。省略した場合、1 と見なされます。start > 1 の場合、部分文字列 (存在する場合) の置換を実行して、その文字で始まる string の部分文字列が返されます。start > $LENGTH(string) の場合、$REPLACE は空の文字列 ("") を返します。
count オプション — 部分文字列を置換する回数。省略した場合、既定値は -1 です。これは、可能なすべての置換を実行します。0、-1 以外の負の数字、非数値文字列または空の文字列は、置換を実行しないことを意味する 0 と同じです。count は、start と併用する必要があります。
case オプションstringoldsub のマッチングで大文字と小文字を区別するかどうかを示すブーリアン・フラグ。0 は大文字と小文字を区別します (既定値)。1 は大文字と小文字を区別しません。ゼロ以外の数は、1 と同様です。数値以外の値は、0 と同様です。プレースホルダのコンマは、start または count が指定されていない場合に指定できます。

説明

$REPLACE 関数は、入力文字列の文字列単位の置換で構成される新しい文字列を返します。stringoldsub 部分文字列を検索します。$REPLACE が一致する値を見つけると、oldsub 部分文字列を newsub に置換し、結果の文字列を返します。newsub パラメータ値は、oldsub より長い値も短い値もとることができます。newsub は空の文字列でもかまいません。

既定では、$REPLACEstring の先頭から開始して、oldsub の各インスタンスを置換します。オプションの start パラメータを使用して、文字列の中の指定された文字カウント位置で比較を開始できます。返される文字列は start の位置から始まり、それ以降の oldsub の各インスタンスを置換する string の部分文字列です。オプションの count パラメータを使用すると、一致する部分文字列の指定された数のみを置換できます。

既定では、$REPLACE 部分文字列マッチングは大文字と小文字が区別されます。オプションの case パラメータを使用して、大文字と小文字が区別されないマッチングを指定することができます。

$REPLACE は、長い文字列が有効化されている Caché インスタンスでの長い文字列 (32,767 文字超の文字列) をサポートしています。

Note:

$REPLACE を使用すると文字列の長さが変わる場合があるため、Caché %List 要素などのエンコードされた文字列値で $REPLACE を使用しないでください。

$REPLACE および $TRANSLATE

$REPLACE は文字列と文字列をマッチングして置換します。$TRANSLATE は文字と文字をマッチングして置換します。$REPLACE は、1 つ以上の文字の単一の指定された部分文字列を別の部分文字列に置換できます。$TRANSLATE は、複数の指定された文字を対応する指定された新しい文字に置換できます。既定では、どちらの関数も、文字列のすべての一致するインスタンスを置換します。

$REPLACE のマッチングは既定で大文字と小文字が区別されますが、大文字と小文字を区別せずに呼び出すことができます。一方、$TRANSLATE のマッチングは常に大文字と小文字が区別されます。$REPLACE ではマッチングの開始ポイントおよび/または実行する置換の数を指定できます。一方、$TRANSLATE ではソース文字列の一致対象がすべて置換されます。

以下の例は、$REPLACE の 2 つの使用法を示しています。最初の $REPLACE では、入力文字列値は変更されません。2 番目の $REPLACE では、関数の返り値と同じ値に設定することで、入力文字列値が変更されます。

  SET str="The quick brown fox"
  SET newstr=$REPLACE(str,"brown","red")
  WRITE "source string: ",str,!,"new string: ",newstr,!!
   // creates a new string, does not change str value
  SET str=$REPLACE(str,"brown","silver")
  WRITE "revised string: ",str
   // creates a new string and replaces str with new string value

以下の例では、$REPLACE を呼び出して、部分文字列のすべてのインスタンスのマッチングと置換、部分文字列の最初の 2 つのインスタンスのマッチングと置換を実行します。

   SET str="1110/1110/1100/1110"
   WRITE !,"before conversion  ",str
   SET newall=$REPLACE(str,"111","AAA")
   WRITE !,"after replacement  ",newall
   SET newsome=$REPLACE(str,"111","AAA",1,2)
   WRITE !,"after replacement  ",newsome

以下の例では、$REPLACE を呼び出して、大文字と小文字を区別するマッチングと大文字と小文字を区別しないマッチングを行い、文字列のすべての出現箇所を置換します。

   SET str="Yes/yes/Y/YES/Yes"
   WRITE !,"before conversion  ",str
   SET case=$REPLACE(str,"Yes","NO")
   WRITE !,"after replacement  ",case
   SET nocase=$REPLACE(str,"Yes","NO",1,-1,1)
   WRITE !,"after replacement  ",nocase

以下の例では、$REPLACE 関数と $TRANSLATE 関数を比較します。

   SET str="A mom, o plom, o comal, Pomama"
   WRITE !,"before conversion  ",str
   SET s4s=$REPLACE(str,"om","an")
   WRITE !,"after replacement  ",s4s
   SET c4c=$TRANSLATE(str,"om","an")
   WRITE !,"after translation  ",c4c

$REPLACE は "A man, o plan, o canal, Panama" を返します。

$TRANSLATE は "A nan, a plan, a canal, Panana" を返します。

以下の例で、$REPLACE の 4 パラメータ形式は、開始ポイントから始まる文字列の一部のみを、文字列と文字列の置換を行って返します。

   SET str="A mon, a plon, a conal, Ponama"
   WRITE !,"before start replacement ",str
   SET newstr=$REPLACE(str,"on","an",8)
   WRITE !,"after start replacement  ",newstr  

$REPLACE は "a plan, a canal, Panama" を返します。

関連項目

FeedbackOpens in a new tab