文字列の比較で使える「=:」を紹介します。
非常に重要な性質・注意点も含めて紹介していきます。
Sample data
例
変数Xが "ab" で始まる値かどうか、という比較を行っています。
ここでいうLENGTHとは以下を指します。
文字列の場合 | 「文字列の長さ」 |
変数の場合 | 「固定長の文字変数」の場合 「文字列と末尾の空白を含む長さ(つまり変数に定義した長さ)」 「固定長の文字変数」以外では「=:」がうまく機能しないので、 使用しないで下さい(詳細も割愛) |
上の例では、「X =: "ab"」で、
・左辺に指定した変数Xに定義されたlengthは「3」
・右辺に指定した "ab" は2バイトなのでlengthは「2」
この2つのlengthで小さいのは「2」なので、左辺の変数値を2バイトに切り捨てると以下の通り。
ab → ab
abc → ab
cab → ca
この切り捨てた値と右辺の "ab" がイコールか否か、という判定を行います。
「X =: "abcd"」で
・左辺の変数Xに定義されたlengthは「3」、
・右辺の "abcd" は4バイトなのでlengthは「4」、
lengthが小さいのは「3」なので、右辺の文字 "abcd" を3バイトで切り捨てると "abc" となります。
この "abc" が変数Xとイコールか否か、という判定を行います。
この切り捨てルールを知らないと、一見「変数Xが "abcd" で始まる値かどうか」と思ってしまいがちですが、間違いです!
今回の例のデータでもし「変数Xが "abcd" で始まる値かどうか」を判定したいなら、以下のように他の方法を使ったほうが安全です。
0 件のコメント:
コメントを投稿