2011-08-07 13 views
2

大括弧で囲まれた注釈を含むNSStringオブジェクトにテキストが読み込まれている - 角括弧とその中のすべてを削除して、本文にのみ表示されるようにする必要があります。NSStringで角括弧を検索する

しかし、Objective-Cがメッセージングなどのための角括弧に依存しているため、私はそれらを削除するのに少し問題があります。

角括弧を使用するための特殊なエスケープ文字がありますか( 'rangeOfString:'への引数など)? Xcodeは、繰り返しないことを私に知らせます。

乾杯

答えて

3

あなたがしたい部分文字列を削除するために正規表現を使用することができます。

NSString *s = @"hi[bla]tototo[lalA123]a"; 
NSString *result = [s stringByReplacingOccurrencesOfString:@"\\[[\\w]+\\]" 
               withString:@"" 
                options:NSRegularExpressionSearch|NSCaseInsensitiveSearch 
                range:NSMakeRange(0, [s length])]; 
NSLog(@"%@", result); 
// output "hitototoa" 

P.S.をあなたの注釈に '\ w'指定子に一致しない文字が含まれている場合は

+0

絶対にお金で、素晴らしいものはありがとう。 –

1

あなたは@"["@"]"のような意味ですか?

Objective-Cの文字列は、@""の間でなければなりません。

+0

あなたはそれの両方の文字でNSStringのを持っている場合は、@「[このよう]」あなたが引数としてそれを使用している場合、それはのような(問題を引き起こす可能性がありますrangeOfString :)これは私がする必要があるものです。 –

+0

"エスケープされていない"記号以外は何も問題がありません。コードと文字列を投稿することはできますか? –

0

私はVladimirの正規表現ベースの答えは良いと思っていますが、OPが非常に混乱しているのでrangeOfString 。 NSStringsの中に角括弧を使用することは問題ありません。これは、Objective Cのメッセージング用の角括弧の使用とは関係ありません。

これが私のために正常に動作します:

NSString * a = @"Some [thing] here"; 
NSRange rangeOpen = [a rangeOfString:@"["]; 
NSRange rangeClose = [a rangeOfString:@"]"]; 
NSLog(@"%lu %lu, %lu %lu.", 
     (unsigned long)rangeOpen.location, 
     (unsigned long)rangeOpen.length, 
     (unsigned long)rangeClose.location, 
     (unsigned long)rangeClose.length); 
# Logs "5 1, 11 1." 
関連する問題