3

次のコードを使用して、ファイルの拡張子を置き換えます。

NSString *fileOriginal = [url lastPathComponent];
NSString *fileSource = @"";
NSRange range = [fileOriginal rangeOfString:@"." options:NSBackwardsSearch];
if (range.length > 0) {
    range.length = fileOriginal.length - range.location;
    fileSource = [fileOriginal stringByReplacingCharactersInRange:range withString:[NSString stringWithFormat:@".%@", @"cpp"]];
} else {
    fileSource = [fileOriginal stringByAppendingString:[NSString stringWithFormat:@".%@", gFileExtension]];
}

コードは正常に機能します。しかし、デバッガーは最後にゴミを表示しますNSString

ここに画像の説明を入力してください

文字列に追加しようとした場合も同じ結果にretainなります。一体何が起こるの?

4

1 に答える 1

1

の定義gFileExtensionが有効であると仮定して、これを試してみませんか。

NSString *fileSource;
if ([[fileOriginal pathExtension] length] > 0)
{
    fileSource = [[fileOriginal stringByDeletingPathExtension] stringByAppendingPathExtension:gFileExtension];
}
else
{
    fileSource = [fileOriginal stringByAppendingPathExtension:gFileExtension];
}

に組み込まれているパス処理を使用するNSStringと、ドットについて心配する必要はありません。それはあなたのために行われます。

于 2013-02-18T02:00:20.653 に答える