Извлечение текста из строки NSString с помощью регулярных выражений - PullRequest
1 голос
/ 12 сентября 2011

У меня есть NSString в этом формате:

"Key1-Значение1, Key2-Value2, Key3-Value3 ..."

Мне нужны только ключи (с пробелом после каждой запятой):

Ключ1, Ключ2, Ключ3 и т. Д.

Я думал создать массив компонентов из строки, используя запятую в качестве разделителя, и после, для каждого компонента, извлечь все символы, начиная с "-"; тогда я бы сериализовал элементы массива. Но я боюсь, что это может быть очень тяжело с выступлениями.

Вы знаете способ сделать это с помощью регулярных выражений?

1 Ответ

2 голосов
/ 12 сентября 2011

Регулярное выражение будет сильно зависеть от данных, которые вы используете. Например, если ключу или значению разрешено быть всеми числами или разрешено содержать пробелы и знаки препинания, вам необходимо изменить регулярное выражение. Однако для вашего текущего примера это будет работать.

NSString *example = @"Key1-Value1,Key2-Value2,Key3-Value3,...";
NSString *result = [example stringByReplacingOccurrencesOfString:@"(\\w+)-(\\w+),?" 
                                                      withString:@"$1, " 
                                                         options:NSRegularExpressionSearch
                                                           range:NSMakeRange(0, [example length])];
result = [result stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
NSLog(@"%@", result);
...