从NSString的第一行删除换行符

时间:2009-06-17 05:39:11

标签: iphone objective-c cocoa macos nsstring

如何从NSString中删除第一个 \ n 字符?

编辑:只是为了澄清,我想做的是: 如果字符串的第一行包含\ n字符,则删除它,否则不执行任何操作。

ie:如果字符串是这样的:

@"\nhello, this is the first line\nthis is the second line"

并且反对第一行中不包含换行符的字符串:

@"hello, this is the first line\nthis is the second line."

我希望这更清楚。

3 个答案:

答案 0 :(得分:39)

[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]

将从任何类型的换行符修剪您的字符串,如果这是您想要的。

[string stringByReplacingOccurrencesOfString:@"\n" withString:@"" options:0 range:NSMakeRange(0, 1)]
如果它是字符串

中的第一个字符,

将完全按照您的要求执行并删除换行符

答案 1 :(得分:11)

这应该可以解决问题:

NSString * ReplaceFirstNewLine(NSString * original)
{
    NSMutableString * newString = [NSMutableString stringWithString:original];

    NSRange foundRange = [original rangeOfString:@"\n"];
    if (foundRange.location != NSNotFound)
    {
        [newString replaceCharactersInRange:foundRange
                                 withString:@""];
    }

    return [[newString retain] autorelease];
}

答案 2 :(得分:6)

不是创建NSMutableString并使用一些保留/释放调用,而是只使用原始字符串并使用以下代码简化代码:(需要10.5 +)

NSRange foundRange = [original rangeOfString:@"\n"];
if (foundRange.location != NSNotFound)
    [original stringByReplacingOccurrencesOfString:@"\n"
                                        withString:@""
                                           options:0 
                                             range:foundRange];

(有关详细信息,请参阅-stringByReplacingOccurrencesOfString:withString:options:range:。)

最后一次调用方法调用的结果甚至可以安全地分配回原来的 IF ,你首先自动释放那些内容,这样你就不会泄漏内存。