2012-01-01 7 views
1

NSStringの終わりが@ 2x.png(大文字と小文字は区別されません)であるかどうか確認したいと思います。どうやってやるの?NSStringが文字列で終わるかどうか確認してください。

私は今このコードを持っていますが、@ 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]ファイル名:あなたがコンテンツを変更することはできませんので、あなたはNSStringのを持って

答えて

0

あなたはこのようなものが必要。試してみてください:

また
NSString *fileName = [_sourcePath lastPathComponent]; 
fileName = [fileName stringByReplacingOccurrencesOfString:@"2x" withString:@""]; 
fileName = [fileName stringByReplacingOccurrencesOfString:@"2X" withString:@""]; 
NSLog(@"Filename: %@", fileName); 

、あなたはインライン交換をインラインで行いますNSMutableStringreplaceOccurrencesOfString: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:

+0

:大文字小文字を区別しない交換を行うには

は、さらにいくつかの引数と同じ方法の第二の実装があります。その文書の中で...ちょうどそれを逃した。 @mvdsの提案とともにこれを変更しました。 –

1

[email protected]文字列のstringByReplacingOccurrencesOfStringは変更された文字列を返しますが、fileName文字列を変更していません。あなたはNSStringのは(状態がmodifieidすることはできません)不変であるので、あなたの変数を再割り当てする必要が

fileName = [fileName stringByReplacingOccurrencesOfString:@"@2x" withString:@""]; 
fileName = [fileName stringByReplacingOccurrencesOfString:@"@2X" withString:@""]; 
NSLog(@"Filename: %@", fileName); 
7

はこのような何かを試してみてください。 idを返さないメソッドを呼び出しているので、fileNamerangeOfStringを呼び出す前にnilでないことを確認してください。 nilでメソッドを呼び出すと、NSRangeタイプと互換性がなく、予期しない結果につながるnilが返されます。

1

他の回答で述べたように、結果を変数に再割り当てする必要があります(または、-mutableCopyで可変文字列を作成し、NSMutableStringの置換方法を使用してください)。私はそれを知られている必要があります

fileName = [fileName stringByReplacingOccurrencesOfString:@"@2x" withString:2"" options:NSCaseInsensitiveSearch range:NSMakeRange(0, fileName.length)]; 
関連する問題