COPYコピー関数

本ページには広告が含まれています。

文字列の一部を切り出します。

構文
  1. UString = COPY( 文字列, 開始位置, コピー文字数 )
  2. UString = COPYB( 文字列, 開始位置, コピー文字数 )
引数
文字列 (String)必須
コピー元の文字列
開始位置 (Integer)必須
コピーすべき文字列の開始位置(1から)
コピー文字数 (Integer)省略可
コピーすべき文字数(省略時は最後の文字まで)
戻り値

結果の文字列

ANSI(バイト)処理の場合はCOPYB

使い方

半角文字は1文字=1バイトなので以外はCOPY、COPYBともに同じ結果となります。

UWSC
PRINT COPY("abcdefg", 2, 4)
PRINT COPYB("abcdefg", 2, 4)
結果
プレーンテキスト
bcde
bcde

しかし処理する対象が日本語などのマルチバイトの場合1文字=1バイトでないため、日本語1文字の半分だけ切り出されると文字化けを起こします。

UWSC
PRINT COPY("あいうえお", 2, 4)
PRINT COPYB("あいうえお", 2, 4)
結果
プレーンテキスト
いうえお
い・

文字列を左・右から切り出す

文字列を左からi文字切り出す。

UWSC
PRINT COPY(str, 1, i)

文字列を右からi文字切り出す。

UWSC
PRINT COPY(str, LENGTH(str) - i + 1)

文字列を左からiバイト切り出す。

UWSC
PRINT COPYB(str, 1, i)

文字列を右からiバイト切り出す。

UWSC
PRINT COPYB(str, LENGTHB(str) - i + 1)

開始位置

開始位置に小数の値を指定した場合、整数に切り捨てた値で処理されます。0や負数を指定した場合は「1」として処理されます。

コピー文字数

コピー文字数に小数の値を指定した場合、整数に切り捨てた値で処理されます。0や負数を指定した場合は「0」として処理されます。

プログラム実行例

ポップアップメニューで選択した項目を出力(サブメニューあり)

UWSC
DIM menu[] = "項目1", "項目2", "{項目2-1", "項目2-2}", "項目3", "{項目3-1", "項目3-2", "項目3-3}", "項目4", "項目5"
DIM res = POPUPMENU(menu)

// サブメニューとして指定する際に必要な「{ }」を削除
IF COPY(menu[res], 1, 1) = "{" THEN menu[res] = COPY(menu[res], 2)
IF COPY(menu[res], LENGTH(menu[res], 1)) = "}" THEN menu[res] = COPY(menu[res], 1, LENGTH(menu[res] - 1))

PRINT menu[res]

オブジェクトを作成したアプリケーションを示す数値を取得

UWSC
DIM Excel = CREATEOLEOBJ("Excel.Application")
Excel.Visible = TRUE
Excel.Workbooks.Add()

DIM dec = Excel.Worksheets.Creator
DIM hex = decToHex(dec)

DIM str = ""

FOR i = 1 TO LENGTH(hex) STEP 2
	str = str + CHR("$" + COPY(hex, i, 2))
NEXT

PRINT "32bit," + dec
PRINT "32bit(16進数),0x" + hex
PRINT "文字," + str

Excel.Quit
結果
CSV
32bit,           1480803660
32bit(16進数),   0x5843454C
文字,            XCEL
使用関数

今年の恵方を求める

恵方は西暦の下1桁の数字で決まるので、その値で条件分けをします。

UWSC
DIM year = getYear(today())
DIM y = COPY(year, LENGTH(year))

SELECT y
	CASE 0;		PRINT "西南西微西"
	CASE 1;		PRINT "南南東微南"
	CASE 2;		PRINT "北北西微北"
	CASE 3;		PRINT "南南東微南"
	CASE 4;		PRINT "東北東微東"
	CASE 5;		PRINT "西南西微西"
	CASE 6;		PRINT "南南東微南"
	CASE 7;		PRINT "北北西微北"
	CASE 8;		PRINT "南南東微南"
	CASE 9;		PRINT "東北東微東"
SELEND
結果
プレーンテキスト
西南西微西
使用関数
解説

関連記事

Folder.CopyHere メソッド (Shell)
1つまたは複数のアイテムをフォルダにコピーします。
FSO.CopyFile メソッド
指定したファイルを別の場所にコピーします。
FSO.CopyFolder メソッド
指定したフォルダを別の場所にコピーします。
Range.Copy メソッド (Excel)