Cho một chuỗi, tôi cần lấy số lượng mỗi từ xuất hiện trong chuỗi đó. Để làm như vậy, tôi trích xuất chuỗi thành một mảng, theo từ, và tìm kiếm theo cách đó, nhưng tôi có cảm giác rằng việc tìm kiếm chuỗi trực tiếp là tối ưu hơn. Dưới đây là mã mà tôi đã viết ban đầu để giải quyết vấn đề. Tôi đang lên cho các đề xuất về các giải pháp tốt hơn mặc dù.iOS - Cách hiệu quả nhất để tìm số lần xuất hiện từ trong một chuỗi
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);
Ví dụ:
Bắt đầu chuỗi:
". Đây là một thử nghiệm này chỉ là một thử nghiệm"
Kết quả:
- "Đây" - 2
- "là" - 2
- "a" - 2
- "test" - 2
- "chỉ" - 1
Phương pháp của bạn có hoạt động không? Bạn không có vấn đề với biểu tượng dấu chấm? Tôi đoán bạn nên có "thử nghiệm". thay vì "thử nghiệm". – Ricardo