Удалить символ новой строки из первой строки NSString
Как удалить первый символ \n из NSString?
Изменить: Чтобы уточнить, что я хотел бы сделать, это:
Если первая строка строки содержит символ \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
Это должно сделать трюк:
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
[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]
будет обрезать вашу строку из любой новой строки, если это вам нужно.
[string stringByReplacingOccurrencesOfString:@"\n" withString:@"" options:0 range:NSMakeRange(0, 1)]
сделает именно то, что вы просите, и удалите новую строку, если это первый символ в строке
Ответ 3
Вместо создания 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. Вы автоматически подтверждаете, что там сначала, поэтому вы не просачиваете память.