16

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

编辑:澄清一下,我想做的是:如果字符串的第一行包含一个 \n 字符,则删除它,否则什么也不做。

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

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

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

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

我希望这更清楚。

4

3 回答 3

40
[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]

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

[string stringByReplacingOccurrencesOfString:@"\n" withString:@"" options:0 range:NSMakeRange(0, 1)]

将完全按照您的要求执行并删除换行符,如果它是字符串中的第一个字符

于 2009-06-17T05:51:22.033 回答
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];
}
于 2009-06-17T05:51:49.070 回答
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:。)

如果您首先自动释放那里的内容,那么最后一次调用方法调用的结果甚至可以安全地分配回原始位置,这样您就不会泄漏内存。

于 2009-06-17T22:52:07.947 回答