2015-11-24 1 views
0

У меня есть строка, которую мне нужно разделить на массив слов. Я использовал NSArray *words = [cleanText componentsSeparatedByString:@" "];, который работал нормально, пока не натолкнулся на конец абзаца, в результате чего компонент «end. \ N \ nStart».Использование компонентовSeparatedByString с несколькими строками разделителя?

Есть ли способ разделить строку на компоненты с использованием символа "", а также символа "\ n \ n"? Или есть более правильный способ решить эту проблему?

ответ

1

Вы можете разделить на whitespaceAndNewlineCharacterSet. Вы получите пустые «слова», когда cleanText имеет более одного разделительного символа в строке, и вы, вероятно, захотите отфильтровать их.

NSArray *words = [@"" componentsSeparatedByCharactersInSet: 
    [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
words = [words filteredArrayUsingPredicate: 
    [NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *_) { 
     return [object length] > 0; 
    }]]; 
+0

Я получаю несовместимые типы указателей блоков, отправляющих 'int (^) (_ strong id, NSDictionary * _strong) – jroyce

2

Вы описываете разделение строки с использованием регулярного выражения, такого как "\s". Если вы посмотрите на, например, https://github.com/bendytree/Objective-C-RegEx-Categories/blob/master/RegExCategories.m вы можете получить код для расщепления на соответствие регулярному выражению.

В качестве альтернативы вы можете разбить на набор символов, позвонив по номеру componentsSeparatedByCharactersInSet: и использовать whitespaceAndNewlineCharacterSet.

Смежные вопросы