sanitizeContainerName static method

String? sanitizeContainerName(
  1. String? raw
)

去掉 Windows 非法文件名字符;空串或 GetStorage 视为无效。

Implementation

static String? sanitizeContainerName(String? raw) {
  if (raw == null) return null;
  var name = raw.trim();
  if (name.isEmpty) return null;
  name = name.replaceAll(RegExp(r'[<>:"/\\|?*]'), '_');
  name = name.replaceAll(RegExp(r'[\x00-\x1F]'), '');
  name = name.replaceAll(RegExp(r'[. ]+$'), '');
  if (name.isEmpty) return null;
  if (name.toLowerCase() == sharedContainerName.toLowerCase()) {
    return null;
  }
  if (RegExp(
    r'^(con|prn|aux|nul|com[1-9]|lpt[1-9])$',
    caseSensitive: false,
  ).hasMatch(name)) {
    name = '${name}_box';
  }
  if (name.length > 80) {
    name = name.substring(0, 80).replaceAll(RegExp(r'[. ]+$'), '');
  }
  return name.isEmpty ? null : name;
}