我想检查我的NSString是否以@ 2x.png结尾(不区分大小写)。我该怎么办?
我现在有这段代码,但是它似乎忽略了@ 2x部分。
NSString *fileName = [_sourcePath lastPathComponent];
[fileName stringByReplacingOccurrencesOfString:@"@2x" withString:@""];
[fileName stringByReplacingOccurrencesOfString:@"@2X" withString:@""];
NSLog(@"Filename: %@", fileName);
2012-01-01 21:00:55.600 NewApp [23930:707]文件名:[email protected]
您需要重新分配变量,因为NSString是不可变的(状态无法修改)。试试:
NSString *fileName = [_sourcePath lastPathComponent];
fileName = [fileName stringByReplacingOccurrencesOfString:@"2x" withString:@""];
fileName = [fileName stringByReplacingOccurrencesOfString:@"2X" withString:@""];
NSLog(@"Filename: %@", fileName);
或者,如果要进行内联替换,请使用NSMutableString
和replaceOccurrencesOfString:withString:options:range
进行内联替换。
尝试这样的事情:
NSRange range = [fileName rangeOfString:@"@2x.png" options:NSCaseInsensitiveSearch];
if ( range.location != NSNotFound &&
range.location + range.length == [fileName length] )
{
NSLog(@"%@ ends with @2x.png",fileName);
}
ps。请注意,在调用fileName
之前,应确保nil
不是rangeOfString
,因为您正在调用的方法不会返回id
。在nil
上调用方法将返回nil
,该方法与NSRange
类型不兼容,将导致意外结果。
您有一个NSString,所以您不能更改字符串的内容。 stringByReplacingOccurrencesOfString返回修改后的字符串,但不会更改fileName字符串。
您需要这样的东西:
fileName = [fileName stringByReplacingOccurrencesOfString:@"@2x" withString:@""];
fileName = [fileName stringByReplacingOccurrencesOfString:@"@2X" withString:@""];
NSLog(@"Filename: %@", fileName);
如其他答案中所述,您需要将结果重新分配给变量(或者,使用-mutableCopy
创建一个可变字符串,并使用NSMutableString
中的替换方法。]]
要进行不区分大小写的替换,该方法的第二种实现带有更多参数:
fileName = [fileName stringByReplacingOccurrencesOfString:@"@2x" withString:2"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, fileName.length)];
旧线程,但是它没有最新的检查方法[[如果NSString以字符串结尾