Учитывая строку, мне нужно получить подсчет каждого слова, которое появляется в этой строке. Для этого я выделил строку в массив, словом и обыскал этот путь, но я чувствую, что поиск строки напрямую более оптимален. Ниже приведен код, который я изначально написал для решения проблемы. Тем не менее, я готов принять предложения по лучшим решениям.
NSMutableDictionary *sets = [[NSMutableDictionary alloc] init];
NSString *paragraph = [[NSString alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"text" ofType:@"txt"] encoding:NSUTF8StringEncoding error:NULL];
NSMutableArray *words = [[[paragraph lowercaseString] componentsSeparatedByString:@" "] mutableCopy];
while (words.count) {
NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc] init];
NSString *search = [words objectAtIndex:0];
for (unsigned i = 0; i < words.count; i++) {
if ([[words objectAtIndex:i] isEqualToString:search]) {
[indexSet addIndex:i];
}
}
[sets setObject:[NSNumber numberWithInt:indexSet.count] forKey:search];
[words removeObjectsAtIndexes:indexSet];
}
NSLog(@"%@", sets);
Пример:
Начальная строка:
"Это тест. Это всего лишь тест".
Результаты:
- "This" - 2
- "is" - 2
- "a" - 2
- "test" - 2
- "only" - 1