質問

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."

それがより明確になることを願っています。

役に立ちましたか?

解決

これでうまくいくはずです:

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

他のヒント

[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]

必要に応じて、あらゆる種類の改行から文字列を削除します。

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

文字列の最初の文字である場合は、要求どおりに改行を削除し、改行を削除します

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 に最初に存在するものを自動解放してメモリをリークしないように、安全に元の割り当てに戻すこともできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top