2015-02-16 1 views
1

Рассмотрим следующий кодцель с матча регулярное выражение преобразования в верхний регистр перед заменой

NSString* originalString = @"I love regex. regex is cool."; 
NSString* regexString = [NSString stringWithFormat:@"(regex)"]; 
NSString* replaceWithString = @"[$1]"; 
NSString* finalString = [htmlString stringByReplacingOccurrencesOfRegex:regexString withString:replaceWithString]; 

Выход:

Я люблю [регулярное выражение]. [regex] круто.

Что хочет вместо этого

Я люблю [Regex]. [REGEX] классный.

i.e, toUpperCase() совпадений группы типа $ 1.

Похоже, что я могу это сделать, используя replacementStringForResult:inString:offset:template:, но не знаю как. Может кто-то любезно помочь.

+1

я не знаю, если это будет работать вы, но на многих языках вы можете использовать '\ u \ 1' или, возможно,' \ u $ 1' –

ответ

0

Вы можете добиться того, что вы хотите с RegexKit, как это:

upper = [originalString stringByMatching:@"(regex)" 
         replace:RKReplaceAll 
         withReferenceString:@"[\\U$1\\E]"]; 
// I love [REGEX]. [REGEX] is cool. 

Ссылки:

+0

О, я думал, что NSRegularExpression сделал RegexKit устаревшим !! Подождите, пока кто-нибудь ответит, если возможно использование стандартных API Apple вместо RegexKit – Amarsh