これらのサンプルは、長い文字列(この例ではフルパスのファイル名)から、部分文字列(ファイル名)を取得する方法をいくつか示しています。 最後に、2つの文字列を連結する方法を示します。
この例では、文字列メソッドは、特定の事例として作成していますが、一般に必要な操作に使うことができます。
// 組込みの文字列メソッド GetFileName()を使用 string fname$="C:\Program Files\Origin 8\Samples\Import\S15-125-03.dat"; string str1$ = fname.GetFileName()$; str1$=;
ここでは、文字列メソッドを組み合わせて使用します。
// 関数ReverseFind と Mid を使ってファイル名を抽出 string fname$="C:\Program Files\Origin 8\Samples\Import\S15-125-03.dat"; // 右から探すことで、最後の '\' の位置を見つける int nn=fname.ReverseFind('\'); // その位置の後に開始し、終わりまでの部分文字列を取得 string str2$=fname.Mid(nn1)$; // ファイル名をスクリプトウィンドウに出力 str2$=;
ここでは、別の一般的な探索方法を使って、操作を完了させます。
// トークンを使って、ファイル名を抽出 string fname$="C:\Program Files\Origin 8\Samples\Import\S15-125-03.dat"; // '\' 記号で区切られたトークンの数を取得 int nn=fname.GetNumTokens('\'); // 最後のトークンを取得 string str3$ = fname.GetToken(nn, '\')$; // そのトークンの値をスクリプトウィンドウに出力 str3$=;
'+' 演算子を使って、文字列を連結することができます。以下に示すように行います。
string aa$="reading"; string bb$="he likes " + aa$ + " books"; type "He said " + bb$;
insert 文字列メソッドを使って、2つの文字列を連結することができます。
string aa$ = "Happy"; string bb$ = " Go Lucky"; // 文字列 'aa' を文字列 'bb' に位置1で挿入 bb.insert(1,aa$); bb$=;
サポートされている文字列メソッドの一覧と説明については、String (オブジェクト)をご覧下さい。
文字列レジスタは、より簡単で強力に使うことができますが、文字列変数とそのメソッドに比べ、読み込みが難しくなります。また、これらは、グローバル(セッションスコープ)なので、他のプログラムにより修正されることが少なくなります。
// 2つの文字列を文字列レジスタを使って連結 %A="Left"; %B="Handed"; %N="%A %B"; %N= // "Left Handed"
// 長いファイルパスの文字列からファイル名の部分文字列を抽出 %N="C:\Program Files\Origin 8\Samples\Import\S15-125-03.dat"; for(done=0;done==0; ) { %M=%[%N,>'\']; if(%[%M]>0) %N = %M; else done = 1; } %N=;
このサンプルは、文字列から数値を抽出する複数の方法を示しています。
// 文字列変数は多くのメソッドをサポート string fname$="S15-125-03.dat"; int nn=fname.Find('S'); string str1$ = fname.Mid(nn+1, 2)$; type "1st number = %(str1$)"; string str2$ = fname.Between("-", "-")$; type "2nd number = %(str2$)"; int nn = fname.ReverseFind('-'); int oo = fname.ReverseFind('.'); string str3$ = fname.Mid(nn + 1, oo - nn - 1)$; type "3rd number = %(str3$)"; type $(%(str2$) - %(str1$) * %(str3$)); // 文字列レジスタを使って、部分文字列の表記を使用可能 %M = "S15-125-03.dat"; %N = %[%M,2:3]; // 開始と終了を指定 type "1st number = %N"; %N = %[%M,>'S']; // 'S'の後の文字列を探す %N = %[%N,'-']; // '-'の前の残りを探す type "1st number = %N"; %O = %[%M,#2,\x2D]; // '-' (16進数で 2D)で区切られた2番目のトークンを探す type "2nd number = %O"; %P = %[%M,'.']; // 拡張子を取る %P = %[%P,>'-']; // 最初の '-'の後 %P = %[%P,>'-']; // 2番目の '-'の後 type "3rd number = %P"; type $(%O - %N * %P);