2

componentsSeperatedByStringinを使用して複数の単語/タグを削除する良い方法はありNSStringますか?私を驚かせた唯一のアイデアは、このメソッドを3回呼び出して、削除する定義済みのタグをすべて削除することでした。しかし、それはそれほど良いスタイルではないようです。それで、これを行うためのより良い方法はありますか?

#define REMOVE_TAG_1 @"cs193pspot"
#define REMOVE_TAG_2 @"portrait"
#define REMOVE_TAG_3 @"landscape"

// Formats the subtitle by removing the defined tags
- (NSString *)formatSubtitle:(NSString *)subtitle
{
    NSArray *tagsToKeep = [subtitle componentsSeparatedByString:[NSString stringWithFormat:@"%@",REMOVE_TAG_1]];

    NSLog(@"%@",[tagsToKeep description]);
    return nil;
}
4

1 に答える 1

3

タグがスペースで区切られていると仮定すると、最初に文字列を単語の配列に分割します。

NSArray *arrayOfTagsToFilter = @[ REMOVE_TAG_1, REMOVE_TAG_2, REMOVE_TAG_3 ];
NSArray *allTags = [subtitle componentsSeparatedByString:@" "];

NSPredicate次に、削除する必要がある配列内のタグを取得するために使用して配列をフィルタリングします。

NSArray *tagsToRemove = [allTags filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"SELF IN %@", arrayOfTagsToFilter]];

NSMutableArray *tagsToKeep = [NSMutableArray arrayWithArray:allTags];

[tagsToKeep removeObjectsInArray:tagsToRemove];
于 2013-02-28T16:59:47.470 に答える