sanitizeFilename function

String sanitizeFilename(
  1. String input, [
  2. dynamic replacement = '_'
])

Sanitize-filename removes the following: Control characters (0x00–0x1f and 0x80–0x9f) Reserved characters (/, ?, <, >, , :, *, |, and ") Unix reserved filenames (. and ..) Trailing periods and spaces (for Windows) Windows reserved filenames (CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9)

Implementation

String sanitizeFilename(String input, [replacement = '_']) {
  var illegalRe = RegExp(r'[\/\?<>\\:\*\|"]', multiLine: true);
  var controlRe = RegExp(r'[\x00-\x1f\x80-\x9f]', multiLine: true);
  var reservedRe = RegExp(r'^\.+$');
  var windowsReservedRe = RegExp(r'^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$', caseSensitive: false);
  // var windowsTrailingRe = RegExp(r'[\. ]+$');

  //╟O caractere invalido

  var sanitized = input
      .replaceAll('�', replacement)
      .replaceAll('А╟', replacement)
      .replaceAll('╟', replacement)
      .replaceAll(illegalRe, replacement)
      .replaceAll(controlRe, replacement)
      .replaceAll(reservedRe, replacement);
  //  .replaceAll(windowsReservedRe, replacement)
  // .replaceAll(windowsTrailingRe, replacement);

  if (windowsReservedRe.hasMatch(input)) {
    if (!input.contains('.')) {
      sanitized = replacement + sanitized;
    }
  }

  return sanitized;
  //return truncate(sanitized, 255);
}