Mid
Synopsis
Mid(string,start[,length]) Mid(string,start[,length])=value
引数
string | 文字が返される文字列式。 |
start | string 内の部分文字列の開始文字の位置を指定する正の整数 (1 からカウント)。 |
length | オプション — start の位置から返す (または置換する) 文字数を指定する正の整数 (開始文字も含む)。length を省略すると、start の位置から文字列の最後までのすべての文字が返されます (または置換されます)。 |
value | string の指定した数の文字の置換に使用される値。文字列として評価される式。 |
概要
Mid 関数には以下の 2 つの使用方法があります。
-
string の部分文字列を返します。部分文字列は、start 位置を指定することにより決定されます。またオプションで length も使用できます。これには構文 Mid(string,start,length) が使用されます。
-
string の部分文字列を置換します。置換部分文字列は、元の部分文字列と同じ長さでも、長くても、短くてもかまいません。部分文字列は、start 位置を指定することにより決定されます。またオプションで length も使用できます。これには構文 Mid(string,start,length)=value が使用されます。
Mid(string,start,length) は、start と length の各引数で指定された string の文字を返します。引数 length は、返す string の文字数を指定します。length が 0 または負の数の場合、Mid は空の文字列 ("") を返します。対象の文字数より長い length を指定した場合、start の右側のすべての文字が返されます。
Mid(string,start,length)=value は、string の指定の文字を value に置換します。
引数 start は、置換を開始する位置を指定します。start が 1 の場合、string の先頭から開始されます。start が string の長さより長い場合、start に達するまで string に空白スペースが埋め込まれ、そこから value が追加されます。start が 0 または負の数の場合、置換される文字数は、start + length -1 になります。
オプションの引数 length は、置換する string 内の文字数を指定します。length を省略すると、start の右側のすべての文字が置換されます。length が 0 または負の数の場合、string は変更されません。これは、string が空の文字列 ("") の場合も同じです。
string の文字数を指定するには、Len 関数を使用します。
引数 length は、置換する長さではなく、ソースの長さを参照します。これは、置換対象の部分文字列より長くても、短くてもかまいません。
ObjectScript では、$EXTRACT 関数を使用して、同様に部分文字列を返したり、置換したりできます。
例
以下の例では、length の指定なしで、部分文字列を返します。12 番目の文字以降の文字列が返されます。
Dim MyVar
MyVar = Mid("Caché is a powerful database!",12)
Println MyVar ' Returns "powerful database!"
以下の例では、length を指定して、部分文字列を返します。文字列内の 12 番目の文字以降の 8 文字が返されます。
Dim MyVar
MyVar = Mid("Caché is a powerful database!",12,8)
Println MyVar ' Returns "powerful"
以下の例では、Mid 関数はすべて空の文字列を返します。
Dim MyVar
MyVar = Mid("Caché is a powerful database!",0,8)
Println "0,n=",MyVar
MyVar = Mid("Caché is a powerful database!",8,0)
Println "n,0=",MyVar
MyVar = Mid("Caché is a powerful database!",8,-1)
Println "n,-1=",MyVar
以下の例では、数値を数値の引数として指定する場合と、同じ値を文字列として指定する場合の違いを示しています。数値はキャノニック形式に変換されます。つまり、この場合では先頭のゼロは省略されます。
Println Mid(00123456,3,2) ' Returns 34
Println Mid("00123456",3,2) ' Returns 12
置換の例
以下の例では、指定された start 位置から文字列の最後までの文字が置換されます。
var1="ABCD"
var2="ABCD"
var3="ABCD"
var4="ABCD"
var5="ABCD"
PrintLn var
Mid(var1,2)="Z"
PrintLn "start 2: ",var1
Mid(var2,8)="Z"
PrintLn "start 8: ",var2
Mid(var3,1)="Z"
PrintLn "start 1: ",var3
Mid(var4,0)="Z"
PrintLn "start 0: ",var4
Mid(var5,-1)="Z"
PrintLn "start -1: ",var5
以下の例では、さまざまに指定された start 位置から length=2 の文字が置換されます。
var1="ABCD"
var2="ABCD"
var3="ABCD"
Mid(var1,2,2)="xyz"
PrintLn "start 2: ",var1
Mid(var2,8,2)="xyz"
PrintLn "start 8: ",var2
Mid(var3,1,2)="xyz"
PrintLn "start 1: ",var3
以下の例では、start=2 の位置からさまざまな length 値の文字が置換されます。
var1="ABCD"
var2="ABCD"
var3="ABCD"
var4="ABCD"
var5="ABCD"
Mid(var1,2,2)="xyz"
PrintLn "length 2: ",var1
Mid(var2,2,8)="xyz"
PrintLn "length 8: ",var2
Mid(var3,2,1)="xyz"
PrintLn "length 1: ",var3
Mid(var4,2,0)="xyz"
PrintLn "length 0: ",var4
Mid(var5,2,-1)="xyz"
PrintLn "length -1: ",var5
以下の例は、start の位置が 1 未満の置換を示しています。この式は、start+length-1 です。
var1="ABCD"
var2="ABCD"
var3="ABCD"
Mid(var1,-2,5)="xyz"
PrintLn "start -2 for 5: ",var1
Mid(var2,0,1)="xyz"
PrintLn "start 0 for 1: ",var2
Mid(var3,0,2)="xyz"
PrintLn "start 0 for 2: ",var3