sanitizeFilename function
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);
}