文字参照記号

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 3


概要

文字参照記号:

文字参照記号は、文字列から一文字のみを参照するのに使用します。この構文は、テキスト変数、文字列変数、および文字フィールドの任意の場所の文字を指し示します。

Note: 日本語版の4Dでは、WindowsおよびMacの両方で、[[...]]のシンタックスを使用します。

文字参照記号が代入演算子 (:=) の左側にある場合、文字列内の指定した位置に文字を代入します。以下の例は、vsNameが空の文字列ではない場合に、vsNameの最初の文字を大文字にします。

   If (vsName#"")
      vsName[[1]]:=Uppercase(vsName[[1]])
   End if

また、文字列参照記号が式に使用された場合、文字 (参照される) は1文字の文字列として返されます。

      ` 以下の例はvtTextの最後の文字が@であるかをストします。
   If (vtText # "")
      If (Character code(Substring(vtText;Length(vtText);1))=At Sign)
         ` ...
      End if
   End if
   
      ` 文字参照記号を使用し、よりシンプルに記述できます。
   If (vtText # "")
      If (Character code(vtText[[Length(vtText)]])=At Sign)
         ` ...
      End if
   End if

無効な文字列参照に関する注意

文字列参照記号を使用する際、配列の既存の要素を使用するのと同じ要領で、文字列内の既存の文字を使用しなければなりません。例えば、文字列変数の20文字目の文字を参照する場合、この変数は必ずすくなくとも20文字以上の長さがなくてはなりません。

・長さが足りない場合、インタープリタモードでは構文エラーが発生します。

・長さが足りない場合、コンパイルモード (オプション指定なし) では、例えば文字列やテキストの終わりを越えた位置に文字を書き込んだ場合にメモリ領域を破壊するおそれがあります。

・長さが足りない場合、コンパイルモードで範囲チェックオプションをオンにしてある場合、例えば以下のようなコードを実行するとします。

      ` Very bad and nasty thing to do, boo!
   vsAnyText:=""
   vsAnyText[[1]]:="A"

すると、以下のようにランタイムエラーが表示されます。

例題

以下のプロジェクトメソッドは、文字列内の各単語の先頭の文字を大文字に変換した結果の文字列を返します。

      ` Capitalize text project method
      ` Capitalize text ( Text ) -> Text
      ` Capitalize text ( Source text ) -> Capitalized text

   $0:=$1
   $vlLen:=Length($0)
   If ($vlLen>0)
      $0[[1]]:=Uppercase($0[[1]])
      For ($vlChar;1;$vlLen-1)
         If (Position($0[[$vlChar]];" !&()-{}:;<>?/,.=+*")>0)
            $0[[$vlChar+1]]:=Uppercase($0[[$vlChar+1]])
         End if
      End for
   End if

使用例は以下の通り

   ALERT(Capitalize text ("hello, my name is jane doe and i'm running for president!"))

以下のように表示されます。

参照

ASCII コード, Char, Character code.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次