当前位置:  开发笔记 > IOS > 正文

从NSString的第一行删除换行符

如何解决《从NSString的第一行删除换行符》经验,为你挑选了3个好方法。

如何从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."

我希望这更清楚.



1> monowerker..:
[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]

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

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

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



2> e.James..:

这应该做的伎俩:

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];
}


这具有以下缺点:(1)返回可变字符串或(2)需要不可变副本以避免这种情况.使用-stringByReplacingOccurrencesOfString:withString:options:range:更有效地执行此操作.我的答案包括细节和代码示例.

3> Quinn Taylor..:

不是创建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如果您首先自动释放那些内容,那么您不会泄漏内存.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有