在`stringByReplacingCharactersInRange`方法调用之后,在xCode上的`NSString`结尾处的垃圾

时间:2013-02-18 01:44:15

标签: objective-c xcode nsstring

我使用以下代码替换文件的扩展名:

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

的末尾显示垃圾

enter image description here

如果我尝试将retain添加到字符串,结果相同。到底发生了什么?

1 个答案:

答案 0 :(得分:1)

假设您对gFileExtension的定义有效,为什么不试试这个:

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

使用NSString内置的路径处理,您不必担心点;它已经为你完成了。