情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsで文字列からファイル名に使用できない文字を取り除く

文字列からファイル名に使用できない文字を取り除くにはsanitize-filenameモジュールのsanitizeFilename関数を使用します。

var sanitizeFilename = require('sanitize-filename');

var filename = sanitizeFilename('xxx');

第1引数に文字列を指定します。

返り値としてファイル名に使用できない文字が取り除かれた文字列が得られます。

具体的には制御文字や下のような文字が取り除かれます。

  • /
  • ?
  • <
  • >
  • \
  • :
  • *
  • |
  • "

また、文字列の末尾が.や空白である場合には末尾の.や空白が取り除かれます。

また、下のような文字列は全ての文字が取り除かれ、空文字列となります。下のような文字列がファイル名となっている場合も同様です。

  • .
  • ..
  • CON
  • PRN
  • AUX
  • NUL
  • COM1
  • COM2
  • COM3
  • COM4
  • COM5
  • COM6
  • COM7
  • COM8
  • COM9
  • LPT1
  • LPT2
  • LPT3
  • LPT4
  • LPT5
  • LPT6
  • LPT7
  • LPT8
  • LPT9

また、256文字以上の文字列は256文字目以降が全て取り除かれます。

サンプルコード1

sanitize-filename.js

var sanitizeFilename = require('sanitize-filename');

console.log(sanitizeFilename('tan.txt'));
console.log(sanitizeFilename('/t?a<n>.\\t:x*t|'));
console.log(sanitizeFilename('""""'));
console.log(sanitizeFilename('.'));
console.log(sanitizeFilename('..'));
console.log(sanitizeFilename('t.a..n.txt'));
console.log(sanitizeFilename('tan.txt...'));
console.log(sanitizeFilename('tan.txt. .'));
console.log(sanitizeFilename('CON'));
console.log(sanitizeFilename('CON.txt'));
console.log(sanitizeFilename('COM9'));
console.log(sanitizeFilename('COM99'));
console.log(sanitizeFilename('COM999'));
console.log(sanitizeFilename('LPT'));
console.log(sanitizeFilename('LPT0'));
console.log(sanitizeFilename('LPT1'));

使用パッケージ

実行結果

C:\work\node>node sanitize-filename.js
tan.txt
tan.txt



t.a..n.txt
tan.txt
tan.txt



COM99
COM999
LPT

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js