如何从 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."
我希望这更清楚。
如何从 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."
我希望这更清楚。
[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]
如果这是您想要的,将从任何类型的换行符中修剪您的字符串。
[string stringByReplacingOccurrencesOfString:@"\n" withString:@"" options:0 range:NSMakeRange(0, 1)]
将完全按照您的要求执行并删除换行符,如果它是字符串中的第一个字符
这应该可以解决问题:
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];
}
与其创建 NSMutableString 并使用一些保留/释放调用,不如只使用原始字符串并使用以下代码来简化代码:(需要 10.5+)
NSRange foundRange = [original rangeOfString:@"\n"];
if (foundRange.location != NSNotFound)
[original stringByReplacingOccurrencesOfString:@"\n"
withString:@""
options:0
range:foundRange];
(详情请参阅-stringByReplacingOccurrencesOfString:withString:options:range:
。)
如果您首先自动释放那里的内容,那么最后一次调用方法调用的结果甚至可以安全地分配回原始位置,这样您就不会泄漏内存。