验证iPhone中的文件名(或文件夹名)

验证iPhone中的文件名(或文件夹名),iphone,regex,nspredicate,Iphone,Regex,Nspredicate,当用户尝试更改名称时,我正在尝试验证文件名/文件夹名。 我知道我应该使用Regex/nspreditate。然而,我在几个小时的研究之后没有弄明白。 如果有专家能帮助我,我将不胜感激。 非常感谢 Madumal Gunetileke建议: 我修改了他的代码如下。这对我的案子有效 NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"\\/:*?\"<>|"]; if ([newN

当用户尝试更改名称时,我正在尝试验证文件名/文件夹名。 我知道我应该使用Regex/nspreditate。然而,我在几个小时的研究之后没有弄明白。 如果有专家能帮助我,我将不胜感激。 非常感谢

Madumal Gunetileke建议: 我修改了他的代码如下。这对我的案子有效

NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"\\/:*?\"<>|"];
    if ([newName rangeOfCharacterFromSet:set].location != NSNotFound) {
        NSLog(@"illegal Name");
        return;
    }
NSCharacterSet*set=[NSCharacterSet characterSetWithCharactersInString:@“\\/:*?\”|“];
如果([newName rangeOfCharacterFromSet:set].location!=NSNotFound){
NSLog(@“非法名称”);
返回;
}

如果您只是想检查用户提供的新名称是否有效,您可以尝试以下方法:

NSString *yourString = @"<the name you want to verify comes here>";
NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"] invertedSet];
if ([yourString rangeOfCharacterFromSet:set].location != NSNotFound) {
    NSLog(@"NOT Legal");
}
else {
    NSLog(@"Legal");
}
NSString*yourString=@”;
NSCharacterSet*set=[[NSCharacterSet characterSetWithCharactersInString:@“ABCDEFGHIJKLMNOPQRSTUVWXYZABDEFGHIJKLKMNOPQRSTUVXYZ0123456789”]逆变器集];
如果([yourString rangeOfCharacterFromSet:set].location!=NSNotFound){
NSLog(“不合法”);
}
否则{
NSLog(@“法律”);
}

< /代码>基于什么?验证什么有效和无效?@ Culelun Sun,你能举个例子吗?谢谢达尼。我正在检查用户输入是否包含“\/*”中的任何字符?" < > |". 这些字符是我在某处发现的:。不确定iOS是否有完全相同的规则。