第8章 関数
8.2 文字列操作関数
文字列操作関数について説明します。
8.2.1 chr
説明
chrは、文字コード(ASCIIコード)から文字列を取得する関数です。
構文
s0 = chr(n1)
戻り値
パラメタ n1 に与えられた文字コード(ASCIIコード)を持つ文字(1文字からなる文字列)を返します。
0x00から0xffまで以外の数が与えられた場合は、空文字列を返します。
使用例
chr(65) → "A"
8.2.2 format
説明
formatは、文字列などを指定フォーマットに従って整形する関数です。
文字列または数値x1 をs2 で指定されるフォーマットに従って整形します。
構文
s0 = format(x1 [, s2])
パラメタ x1 :
・ 整形される数値または文字列を指定します。
s2 :
・ 整形の仕方を表します。
・ コロン(:)で区切って項目を並べます。不要な空白を入れてはいけません。
・ 最初の項目は、タイプを表します。指定できる値は、以下の3種類です。また、この値によってx1のコンテキストが定 まります。
値 意味 x1のコンテキスト
str 文字列 文字列
fix 固定小数点表示の数値 数値 exp 浮動小数点表示の数値 数値
・ この項目が省略された場合は、str が指定されたものとみなされます。
・ タイプによって、指定できる項目が異なります。
・ 各項目は、単に値を指定する、または<キーワード>=<値>という形式で指定します。
・ 各タイプに定められた順序に従って記述している間は、単に値を書くことで指定することができます。一度キーワード を指定した場合、それ以降はすべての項目にキーワードを指定してください。
・ ある項目に省略値を利用し、それ以降に省略値以外の項目を指定しようとする場合は、キーワードを指定してくださ い。
・ 文字列は引用符などで囲ってはいけません。したがって、文字列中にコロン(:)を含めることはできません。
・ 値には、0以上の整数または文字列が指定できます。どちらを指定するかは項目によって決まっています。以下に示す
「項目」の表を、参照してください。
戻り値
整形した結果の文字列を返します。
項目
【タイプが「str」の場合】
キーワード 可能な値 省略値 説明
width 0以上の整数 0 最小の幅(単位:バイト)
adjust left/right/center left 左詰(left)、右詰(right)、中央揃え(center)
文字列の長さがwidthで指定した値以上だった場合は、その幅が使われます。
【タイプが「fix」の場合】
キーワード 可能な値 省略値 説明
width 0以上の整数 0 最小の幅(単位:バイト)
prec 0以上の整数 0 小数点以下の桁数
adjust left/right/center right 左詰(left)、右詰(right)、中央揃え(center)
ipad 文字列(最初の1バ イトだけが使われ る)
' ' 整数部のパディング文字
キーワード 可能な値 省略値 説明 fpad 文字列(最初の1バ
イトだけが使われ る)
' ' 小数部のパディング文字
delimit 0以上の整数 0 正の整数が指定されていれば、整数部はその
けたごとにカンマ(,)が挿入される
minus 文字列 '-' 値が負の場合に数値の直前に挿入される
plus 文字列 '' 値が正の場合に数値の直前に挿入される zero 文字列 '' 値が0の場合に数値の直前に挿入される
【タイプが「exp」の場合】
キーワード 可能な値 省略値 説明
width 0以上の整数 0 最小の幅(単位:バイト)
prec 0以上の整数 6 小数点以下の桁数
adjust left/right/center right 左詰(left)、右詰(right)、中央揃え(center)
使用例
format("abc") → "abc"
format("abc", "str:10:adjust=center") → " abc "
format(1.45678,"fix:7:4") → "1.4568" (四捨五入されていることに注意)
format(-1234567.89012, "fix:prec=4:minus=▲:delimit=3") → "▲1,234,567.8901"
format(33.333, "exp") → "3.333300E+01"
<!HREPLACE 'format(x*100, "fix"). "%"'>
→ xに保持している割合をパーセントで表示する
8.2.3 index
説明
indexは、文字列中で検索文字を表示する位置を取得する関数です。
位置は先頭を0とします。
n3は省略することができます。省略した場合は0とみなされます。
n3 が負の値の場合も0とみなされます。
構文
n0 = index(s1, s2 [, n3])
パラメタ s1:
・ 検索の対象となる文字列を指定します。
s2:
・ 検索する文字列を指定します。
s3:
・ 検索対象文字列のうち、どの位置から検索を開始するかを指定します。省略することも可能です。その場合は、0が
戻り値
s2 がs1 に表示されない場合は、-1を返します。
s2 が空文字列の場合は、n3 を返します。
s2が空文字列でn3が省略されている場合は、0を返します。
使用例
index("ABCD", "BC") → 1 index("ABCABC", "ABC", 1) → 3 index("ABCABC", "DEF") → -1 index("ABCABC", "", 3) → 3
8.2.4 length
説明
lengthは、文字列の長さを取得する関数です。
日本語文字を含む場合も、バイト単位の長さとなります。
構文
n0 = length(s1)
戻り値
文字列s1の長さを返します。
使用例
length("abc") → 3 length("") → 0 length("あ") → 2 length("\n") → 1
8.2.5 ord
説明
ordは、文字列から文字コード(ASCIIコード)を取得する関数です。
構文
n0 = ord(s1)
戻り値
文字列s1の先頭文字のASCIIコードを返します。
この場合の「先頭文字」とは、「先頭の1バイト」のことを指します。
使用例
ord("A") → 65
8.2.6 substr
説明
substrは、ある文字列から指定された長さの部分文字列を切り出す関数です。
文字列の先頭位置は0です。
構文
s0 = substr(s1, n1 [, n2])
戻り値
文字列s1 の位置n1 から始まる部分文字列を返します。s1、n1、n2 の値により、以下の戻り値を返します。
・ n2 が0または正の数の場合は、長さn2 の部分文字列を返します。
・ n1がs1の長さ以上の場合は、空文字列を返します。
・ n2が省略された場合は、位置n1から最後までの文字列を返します。
・ n1 が負の場合には、末尾から数えて-n1 番目の文字の位置が指定されたものとみなします。ただし、n1 の絶対値が
s1 の長さより大きい場合は、先頭が指定されたものとみなします。
・ n2が負の数の場合は、末尾から-n2だけの文字を除いたものを返します。
・ n1 + n2 がs1 の長さを超える場合は、位置n1 から最後までの文字列を返します。
・ s1 の長さ - n1 の絶対値が n2 の絶対値より大きい場合は、空文字列を返します。
使用例
substr("abcdefghi", 0) → "abcdefghi"
substr("abcdefghi", 3) → "defghi"
substr("abcdefghi", 100) → ""
substr("abcdefghi", 3, 2) → "de"
substr("abcdefghi", -8, 3) → "bcd"
substr("abcdefghi", -20, 2) → "ab"
substr("abcdefghi", 3, -2) → "defg"
substr("abcdefghi", 3, 100) → "defghi"
substr("abcdefghi", 3, -7) → ""
8.2.7 tolower
説明
tolowerは、文字列中の大文字を小文字に変換する関数です。
2バイト系の文字には対応せず、単純にバイト単位で処理します。
構文
s0 = tolower(s1)
戻り値
文字列s1の中に表示される大文字を、すべて小文字に直したものを返します。
使用例
tolower("ABC") → "abc"
tolower("A\nb\nC") → "a\nb\nc"
説明
toupperは、文字列中の小文字を大文字に変換する関数です。
2バイト系の文字には対応せず、単純にバイト単位で処理します。
構文
s0 = toupper(s1)
戻り値
文字列s1 の中に表示される小文字を、すべて大文字に直したものを返します。
使用例
toupper("abc") → "ABC"
toupper("a\nB\nc") → "A\nB\nC"