19 String constants and string variables

文字列定数に加えて、ほとんどの gnuplot コマンドは文字列変数、文字列式 または文字列を返す関数も受け付けます。例えば、以下の 4 つの plot のや り方は結果として全て同じ描画タイトルを生成します:


     four = "4"
     graph4 = "Title for plot #4"
     graph(n) = sprintf("Title for plot #%d",n)


     plot 'data.4' title "Title for plot #4"
     plot 'data.4' title graph4
     plot 'data.4' title "Title for plot #".four
     plot 'data.4' title graph(4)

整数は、それが文字列結合演算子によって作用された場合は、文字列に変換さ れますので、以下の例も上と同様に動作します:


     N = 4
     plot 'data.'.N title "Title for plot #".N

一般に、コマンドラインの各要素は、それらが標準的な gnuplot への命令文 法の一部分と認識されるもの以外は、有効な文字列変数としての評価のみが行 なわれます。よって、以下のコマンド列は、恐らくは混乱を引き起こさないよ うに避けられるべきですが、文法的には間違ってはいません:


     plot = "my_datafile.dat"
     title = "My Title"
     plot plot title title

文字列に対する 3 つの二項演算子が用意されています: 文字列の結合演算子 ".", 文字列の等号演算子 "eq", および文字列の不等号演算子 "ne" です。以 下の例では TRUE が表示されます。


    if ("A"."B" eq "AB") print "TRUE"

2 つの文字列書式関数 gprintfsprintf も参照してください。

任意の文字列、文字列変数、文字列値関数に、範囲指定子をつけることにより 部分文字列を指定できます。範囲指定子は [begin:end] の形で、begin は部 分文字列の先頭位置、end は最後の位置です。位置指定は、最初の文字を 1 番目と見ます。先頭の位置、最後の位置は空、あるいは '*' でも構いません。 その場合、それは元の文字列自体の先頭、あるいは最後を意味します。例えば、 str[:] や str[*:*] はどちらも str の文字列全体を意味します。

竹野茂治@新潟工科大学
2007年8月27日