メインコンテンツまでスキップ

文字列の切り出し

今回はオフィススクリプトを使って、文字列の切り出す方法をサンプルコードと併せて解説します。

VBA との違い

VBA では文字列の切り出しに Left, Mid, Right が使用されていました。

Office スクリプトでは、このうち Mid に相当する関数がいくつか存在します。

利用するメソッド

String.slice を使った場合

Stringオブジェクトに含まれている、sliceメソッドを使用します。

メソッドの詳細
/**
* @param start 切り出す文字の最初位置
* @param end 切り出す文字の終了位置(切り出されるのはこの数値の手前まで)
*/
slice(start: number, end?: number): string;

引数に負数が指定でき、負数を指定した場合は「後ろから n 番目」を表します。

注意していただきたいのは、開始・終了位置のインデックスは 0 から開始されます。

また、切り出される文字は第二引数に指定したインデックスの直前までです。

例えば、slice(0, 3)と指定した場合、文字列の 1 番目から 3 番目までが切り出されます。

第二引数を省略した場合は、開始位置から文字の最後までが対象となります。

ヒント

VBA を習得されていた方は、この関数が勝手が似ているため使いやすいと思います。

sliceを使ったサンプル
function main(workbook: ExcelScript.Workbook) {
/** 対象文字列 */
const target = 'リンゴミカンバナナ';

console.log(target.slice(0, 3)); // リンゴ
console.log(target.slice(3, 6)); // ミカン
console.log(target.slice(-3)); // バナナ
}

String.substring を使った場合

Stringオブジェクトに含まれている、substringメソッドを使用します。

メソッドの詳細
/**
* @param start 切り出す文字の最初位置
* @param end 切り出す文字の終了位置(切り出されるのはこの数値の手前まで)
*/
substring(start: number, end?: number): string;

こちらのメソッドも同様に、開始、終了位置のインデックスは、0 から開始されます。

sliceと同様に、切り出される文字は 2 番目の引数に指定すしたインデックスの直前までです。

引数に負数を指定した場合は、0 とみなされます。

第二引数を省略した場合は、開始位置から文字の最後までが対象となります。

サンプルコード

substringを使ったサンプル
function main(workbook: ExcelScript.Workbook) {
/** 対象文字列 */
const target = 'リンゴミカンバナナ';

console.log(target.substring(0, 3)); // リンゴ
console.log(target.substring(3, 6)); // ミカン
console.log(target.substring(6)); // バナナ
}