16

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

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

4

3 に答える 3

40
[string stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]

必要に応じて、あらゆる種類の改行から文字列をトリミングします。

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

それが文字列の最初の文字である場合、あなたが求めていることを正確に行い、改行を削除します

于 2009-06-17T05:51:22.033 に答える
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];
}
于 2009-06-17T05:51:49.070 に答える
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に安全に割り当てることさえできます。

于 2009-06-17T22:52:07.947 に答える