説明
$REPLACE 関数は、入力文字列の文字列単位の置換で構成される新しい文字列を返します。string で searchstr 部分文字列を検索します。$REPLACE が一致する値を 1 つ以上見つけると、searchstr 部分文字列を replacestr に置換し、結果の文字列を返します。replacestr 引数値は、searchstr より長い値も短い値も取ることができます。searchstr 部分文字列を削除するには、replacestr に空文字列 ("") を指定します。
既定では、$REPLACE は string の先頭から開始して、searchstr の各インスタンスを置換します。オプションの start 引数を使用して、文字列の中の指定された文字カウント位置で比較を開始できます。返される文字列は start の位置から始まり、それ以降の searchstr の各インスタンスを置換する string の部分文字列です。
オプションの count 引数を使用すると、一致する部分文字列の指定された数のみを置換できます。
既定では、$REPLACE 部分文字列マッチングは大文字と小文字が区別されます。オプションの case 引数を使用して、大文字と小文字が区別されないマッチングを指定することができます。
Note:
$REPLACE を使用すると文字列の長さが変わる場合があるため、ObjectScript %List や %List オブジェクト・プロパティなどのエンコードされた文字列値で $REPLACE を使用しないでください。
例
以下の例は、$REPLACE の 2 つの使用法を示しています。最初の $REPLACE では、入力文字列値は変更されません。2 番目の $REPLACE では、関数の返り値と同じ値に設定することで、入力文字列値が変更されます。
SET str="The quick brown fox"
// creates a new string, does not change str value
SET newstr=$REPLACE(str,"brown","red")
WRITE "source string: ",str,!,"new string: ",newstr,!!
// creates a new string and replaces str with new string value
SET str=$REPLACE(str,"brown","silver")
WRITE "revised string: ",str
以下の例では、$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" を返します。