2013-08-23 3 views
1

я не знаю, как описать проблему, но то, что я хочу, чтобы отделить фразу, например:NSString componentsSeparatedByCharactersInSet: как отделить знаки препинания?

Что это? Это собака, маленькая собачка.

компонентов:

"What", "is", "that?", "That", "is", "a", "dog", "a", "little", "dog." 

Так будет пунктуация, проблема в том, некоторые из предложений не имеют места, так как:

Что это Это собака, маленькая собака.

Тогда, если я буду отделяться пространством, я получу «это» и «собаку».

Есть ли способ сделать это?

Я думал о двух проходах, один из которых использовал [[NSCharacterSet lettersCharacterSet] inverseSet], чтобы получить чистые буквы (то есть слова), а затем использовать lettersCharacterSet в качестве разделителя, чтобы получить все пробелы и пунктуации, добавить каждый из пробелы/знаки препинания для каждого слова в 1-м проходе, не уверены, работает ли он?

+1

"не уверен, если это работает", почему бы не попробовать? – BergP

ответ

7

Здесь вы идете ...

NSMutableCharacterSet *seperatorSet = [NSMutableCharacterSet whitespaceAndNewlineCharacterSet]; 
[seperatorSet formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; 
NSMutableArray *words = [[@"What is that?That is a dog,a little dog." componentsSeparatedByCharactersInSet:seperatorSet] mutableCopy]; 

Предоставлено на этот вопрос Split NSString into words, then rejoin it into original form ...

+2

Простой. Элегантный. +1 –

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