メインコンテンツまでスキップ
バージョン: 20 R7 BETA

Replace string

Replace string ( source ; oldString ; newString {; howMany}{; *} ) : Text

引数説明
sourceText元の文字列
oldStringText置き換対象の文字列
newStringText置き換え後の文字列 (空文字の場合オカレンスは削除)
howManyInteger置き換え 省略時、すべてのオカレンスを置き換え
*演算子渡されると、文字コードに基づいて評価
戻り値Text結果の文字列

説明

Replace stringは、sourceに存在するすべてのoldStringnewStringhowMany回数だけ置き換えます。

newStringが空の文字列 ("") の場合は、Replace stringはsourceの中のoldStringをすべて削除します。

howManyを指定した場合、Replace string関数はsourceの最初の文字から探して、その回数分だけoldStringを置き換えます。指定しない場合、発見したoldStringをすべて置き換えます。

oldStringが空の文字列の場合は、Replace stringはなにも変更せず、元の文字列を返します。

デフォルトでこのコマンドはグローバルな比較を行い、言語上の特性と、1つ以上の文字で記述される文字 (例 æ = ae) を考慮に入れます。他方、発音区分符号 (a=A, a=à等) は無視され、文字コードが9未満の制御コードは考慮されません (Unicodeの仕様)。
この動作を変更するには、最後の引数にアスタリスク * を渡します。この場合、比較は文字コードベースで行われます。* 引数は以下のようなケースで必要となります:

  • Char(1)など特別な文字を考慮に入れたい場合、
  • 文字の評価で大文字小文字の区別やアクセント文字を考慮したい場合 (a#A, a#a 等)。

このモードでは、単語が書かれた方法のバリエーションが評価されないことに留意してください。

注: 4D v15 R3 以降、使用するシンタックスに関わらず、文字列を異なる長さの文字列で置き換える際にこのコマンドが使用するアルゴリズムに対し大幅な最適化が行われました。その結果、このコンテキストにおける処理が飛躍的に早くなりました。

例題 1

Replace stringの使用例を次に示します。結果を変数vtResultに代入します。コメントは、変数vtResultに代入される内容についての説明です。

 vtResult:=Replace string("Willow";" ll";"d") //Resultは"Widow"
 vtResult:=Replace string("Shout";"o";"") //Resultは"Shut"
 vtResult:=Replace string(vtOtherVar;Char(Tab);",";*) //vtOtherVar の中の全てのタブをコンマ(.) に置き換える

例題 2

以下の例は、vtResultのテキストからキャリッジリターンとタブを取り除きます。

 vtResult:=Replace string(Replace string(vtResult;Char(Carriage return);"";*);Char(Tab);"";*)

例題 3

この例では発音区分符号を区別するために、* 引数の使用する例を示します。

 vtResult:=Replace string("Crème brûlée";"Brulee";"caramel") //Result gets "Crème caramel"
 vtResult:=Replace string("Crème brûlée";"Brulee";"caramel";*) //Result gets "Crème brûlée"

参照

Change string
Delete string
Insert string

プロパティ

コマンド番号233
スレッドセーフである