空白の削除
ここではオフィススクリプトを使って、文字列の前後の空白や、文字列に含まれるすべての空白を削除する方法を、サンプルコードと併せて解説します。
前後の空白を削除する
Section titled “前後の空白を削除する”利用するメソッド
Section titled “利用するメソッド”Stringオブジェクトに含まれている、trimメソッドを使用します。
/** * @return 前後の空白を取り除いた文字列 */trim(): string;trimメソッドは、半角スペースだけでなく、全角スペース・タブ・改行も空白として取り除きます。
const name = ' 佐藤 太郎 \n';
console.log(name.trim()); // 佐藤 太郎文字列の途中にある空白(佐藤と太郎の間)は削除されません。
先頭だけ・末尾だけの空白を削除する
Section titled “先頭だけ・末尾だけの空白を削除する”先頭だけ、または末尾だけの空白を削除する場合は、replaceメソッドの第一引数に正規表現を指定し、空白を空文字('')に置き換えます。
- 先頭の空白:
/^\s+/(^は文字列の先頭、\s+は 1 文字以上の空白) - 末尾の空白:
/\s+$/($は文字列の末尾)
以下は先頭の空白を削除する例です。パターンを\s+$に変えると、末尾の空白が対象になることを確かめてみましょう。
一致した箇所1 箇所
リンゴ
- メソッドが使う一致
- 使われない一致
結果name.replace(/^\s+/, '')'リンゴ '
パターンが正しくありません:
パターンや文字列を変えて、一致する箇所と結果を確かめてみましょう。
すべての空白を削除する
Section titled “すべての空白を削除する”文字列の途中にある空白も含めて、すべての空白を削除する場合は、空白を表す\sにgフラグを付けた正規表現を指定します。
gフラグを外すと、最初の 1 箇所だけしか削除されないことを確かめてみましょう。
一致した箇所3 箇所
東京都 千代田区 丸の内 1-1
- メソッドが使う一致
- 使われない一致
結果address.replace(/\s/g, '')'東京都千代田区丸の内1-1'
パターンが正しくありません:
パターンや文字列を変えて、一致する箇所と結果を確かめてみましょう。
const address = '東京都 千代田区 丸の内 1-1';
console.log(address.replace(/\s/g, '')); // 東京都千代田区丸の内1-1連続する空白を 1 つにまとめる
Section titled “連続する空白を 1 つにまとめる”空白の数がそろっていないデータは、/\s+/gで連続する空白をまとめて探し、半角スペース 1 つに置き換えると整えられます。
一致した箇所2 箇所
東京都 千代田区 丸の内
- メソッドが使う一致
- 使われない一致
結果address.replace(/\s+/g, ' ')'東京都 千代田区 丸の内'
パターンが正しくありません:
パターンや文字列を変えて、一致する箇所と結果を確かめてみましょう。
前後の空白も取り除く場合は、trimメソッドと組み合わせます。
const address = ' 東京都 千代田区 丸の内 ';
console.log(address.trim().replace(/\s+/g, ' ')); // 東京都 千代田区 丸の内セル範囲の空白をまとめて削除する
Section titled “セル範囲の空白をまとめて削除する”選択しているセル範囲について、文字列の前後の空白を削除するサンプルコードです。
getSelectedRangeメソッドは、複数の範囲を選択している場合や、Power Automate から実行した場合はエラーになります。1 つの範囲を選択してから Excel で実行してください。
function main(workbook: ExcelScript.Workbook) { /** 選択しているセル範囲 */ const range = workbook.getSelectedRange();
const values = range.getValues();
/** 文字列の値だけ前後の空白を取り除いた値 */ const trimmed = values.map((row) => row.map((value) => (typeof value === 'string' ? value.trim() : value)) );
range.setValues(trimmed);}数値や真偽値のセルは、そのままの値を書き戻しています。