2

文字列の山かっことスペースを置き換えたいのですが。たとえば、@"< something >"に移動し@"something"ます。私は現在試しています:

NSString *s1 = @"< something >";
NSString *s2 =
[s1 stringByReplacingOccurrencesOfString:@"[<> ]"
                              withString:@""
                                 options:NSRegularExpressionSearch
                                   range:NSMakeRange(0, s1.length)];

しかし、私は正規表現にまったく慣れておらず、@"[<> ]"機能していないようです。山かっことスペースを削除するために使用する正しい正規表現は何ですか?

4

2 に答える 2

2

のドキュメントに注意してくださいNSRegularExpressionSearch

このオプションは、rangeOfString:... メソッドでのみ使用できます。

したがって、正しい正規表現があったとしても、この方法では使用できません。

-stringByTrimmingCharactersInSet:あなたが説明した状況では、「<」と「」を含む文字セットを使用する方がおそらく使いやすいでしょう。

更新: Joshua Weinberg は、'<'、'>'、および ' ' のすべての文字を削除したいと指摘しています。その場合は、NSRegularExpression の-stringByReplacingMatchesInString:options:range:withTemplate:メソッドを参照してください。

NSError *error = nil;
NSRegularExpression *re = [NSRegularExpression regularExpressionWithPattern:@"<> " options:0 error:&error];
NSString *s1 = @"< something >";
NSRange range = NSMakeRange(0, s1.length);
NSString *s2 = [re stringByReplacingMatchesInString:s1 options:0 range:range withTemplate:@""];

(私はそれをテストしていませんが、正しい方向に向ける必要があります。)

于 2011-12-20T05:11:36.790 に答える
1

文字を取り除くソリューションは次のとおりです: '<', '>',' '

NSCharacterSet*mySet = [NSCharacterSet characterSetWithCharactersInString:@"<> "];

NSString *s1 = @"< something >";

NSArray * components = [s1 componentsSeparatedByCharactersInSet:
                          mySet];
NSMutableString * formattedS1 = [NSMutableString string];
for (NSString * s in components) {
  [formattedS1 appendString:s];
}
NSLog(@"formatted string %@", formattedS1);

将来必要な文字を最初の行に追加できます

于 2011-12-20T06:03:08.597 に答える