trimで全角スペースを削除しない方法

文章系のデータ(文字列)をシステムフラグデータと共に、前後の無駄なスペースや、改行、タブ文字などをエクセルからのコピペの場合に入り込んでしまう場合があります。 でも、日本語文章には、「字下げ」という全角スペースを入れて、文章を整えるルールがある場合、trimを実行してしまうと、文章の前後のスペースが全て削除されてしまうので、トラブルにつながる可能性があります。 それを防止するために、全角スペースは削除しないtrim処理のコードを掲載します。

全角スペース以外の文字をtrimする

const text = " あ い う "; // ←全角スペースも含む const trimmed = text.replace(/^[\s\u0009-\u000d]+|[\s\u0009-\u000d]+$/g, ''); console.log(trimmed); [\s\u0009-\u000d] … 半角スペースやタブ、改行などを対象。 全角スペース(U+3000)は含めていないので削除されません。 結果 >> "あ い う"

単純に半角スペースだけ trim する

const text = " あ い う  "; const trimmed = text.replace(/^[ ]+|[ ]+$/g, ''); console.log(trimmed); [ ] は文字通り半角スペースのみを指定。 これも全角スペースは残ります。 結果 >> "あ い う"

自作関数化する例

function trimHalfSpace(str) { return str.replace(/^[ ]+|[ ]+$/g, ''); } console.log(trimHalfSpace(" あ い う  "));

補足

trimStart() や trimEnd() も同様に 全角スペースも削除対象 なので、 同じように正規表現で部分的に制御するのが唯一の方法です。