#import
接口定义创建一个Objective-C类来实现文件名验证功能。
@interface FilenameValidator : NSObject - (BOOL)isValidFilename:(NSString *)filename; - (void)validateFilenameWithCompletionHandler:(void (^)(BOOL success))completionHandler; @end
实现细节文件名验证类的核心逻辑包括以下几个方面:
1. 检查文件名是否为空确保文件名不为null或空字符串
2. 限制文件名长度确保文件名不超过系统定义的最大长度限制(例如iOS设备上通常为255个字符)
3. 检查特殊字符禁止包含以下字符:/、\、?、*、:、;、&、!、@、$、^、~、`、%、-等(具体取决于平台和文件系统限制)
4. 检查文件扩展名确保文件扩展名有效且不超过平台限制(例如iOS允许最多5个扩展名)
5. 处理错误情况返回错误信息并提供用户反馈建议
示例代码@implementation FilenameValidator - (BOOL)isValidFilename:(NSString *)filename { // 检查文件名是否为空 if (filename == nil || filename.length == 0) { return false; } // 检查文件名长度 if (filename.length > MAX_FILENAME_LENGTH) { return false; } // 检查特殊字符 const char *cstr = filename.UTF8String; for (size_t i = 0; i < filename.length; ++i) { if (!allowedCharacters[cstr[i]]) { return false; } } // 检查扩展名 const NSString *allowedExtensions = @".txt,.pdf,.doc,.jpg,.png"; if (!ofStringContainsSubstring(allowedExtensions, filename)) { return false; } return true; } - (void)validateFilenameWithCompletionHandler:(void (^)(BOOL success))completionHandler { dispatch_async(dispatch_get_main_queue(), ^{ [self isValidFilename:self.filename completionHandler:completionHandler]; }); } @end
总结通过以上方法,可以实现对文件名的全面验证,确保文件名符合平台和系统的各项规定。这种方法适用于需要高效且安全的文件上传或管理场景。