如何从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."
我希望这更清楚。
答案 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 ,你首先自动释放那些内容,这样你就不会泄漏内存。