Удалить символ новой строки из первой строки NSString - PullRequest
16 голосов
/ 17 июня 2009

Как я могу удалить первый \ n символ из строки NSSt?

Изменить: Просто чтобы уточнить, что я хотел бы сделать, это: Если первая строка строки содержит символ \ n, удалите его, иначе ничего не делайте.

т.е.: если строка такая:

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

и против строки, которая не содержит символ новой строки в первой строке:

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

Надеюсь, это прояснит ситуацию.

Ответы [ 3 ]

39 голосов
/ 17 июня 2009
[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]

обрежет вашу строку из любых строк, если вы этого хотите.

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

будет делать именно то, что вы просите, и удалит символ новой строки, если это первый символ в строке

11 голосов
/ 17 июня 2009

Это должно сработать:

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];
}
6 голосов
/ 18 июня 2009

Вместо того чтобы создавать NSMutableString и использовать несколько вызовов retain / release, вы можете использовать только исходную строку и упростить код, используя вместо этого следующее: (требуется 10,5 +)

NSRange foundRange = [original rangeOfString:@"\n"];
if (foundRange.location != NSNotFound)
    [original stringByReplacingOccurrencesOfString:@"\n"
                                        withString:@""
                                           options:0 
                                             range:foundRange];

(Подробнее см. -stringByReplacingOccurrencesOfString:withString:options:range:.)

Результат последнего вызова метода вызова может быть даже безопасно возвращен к исходному ЕСЛИ вы автоматически высвобождаете то, что там сначала, чтобы не пропустить память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...