Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

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) は、startlength の各引数で指定された string の文字を返します。引数 length は、返す string の文字数を指定します。length が 0 または負の数の場合、Mid は空の文字列 ("") を返します。対象の文字数より長い length を指定した場合、start の右側のすべての文字が返されます。

Mid(string,start,length)=value は、string の指定の文字を value に置換します。

引数 start は、置換を開始する位置を指定します。start が 1 の場合、string の先頭から開始されます。startstring の長さより長い場合、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

関連項目

FeedbackOpens in a new tab