2011-11-16 78 views
0

說我有一個包含控制代碼「\ f3」的字符串(是的,它是RTF)。我想用另一個字符串替換該控制代碼。目前我正在使用[mutableString replaceOccurrencesOfString:@"\f3" withString:@"replacement string" options:0 range:NSMakeRange(0, [mutableString length])];替換包含任意數字的字符串的出現

這很好,但有時代碼可以是「\ f4」或甚至「\ f12」,例如。我如何替換這些字符串?我可以爲每個使用replaceOccurrencesOfString,但更好的方法是使用通配符,因爲它可以是任何數字。

回答

2

正則表達式會做到這一點。

查看NSRegularExpression(iOS> = 4)和this page瞭解正則表達式的工作原理。

你會想是這樣的:

// Create your expression 
NSError *error = nil; 
NSRegularExpression *regex = 
    [NSRegularExpression regularExpressionWithPattern:@"\\b\f[0-9]*\\b" 
              options:NSRegularExpressionCaseInsensitive 
               error:&error]; 

// Replace the matches 
NSString *modifiedString = [regex stringByReplacingMatchesInString:string 
                 options:0 
                 range:NSMakeRange(0, [string length]) 
                withTemplate:@"replacement string"]; 

警告:我沒有測試我regaular表達,我沒有讓他們正確的第一次偉大的;我只知道正則表達式是你的前進方向,它必須看這樣的東西那樣;)

+0

非常好!這正是我正在尋找的。我認爲這與正則表達式有關,但直到現在,它們總是避免它們!猜猜我必須學習。 – colincameron

相關問題