我需要將文本轉換在以下兩種格式:NSRegularExpression修改正則表達式組(回調)
[[anyText~number]]
OR [[anyText]]
到相應的HTML格式:
<span name="anyText~number">anyText</span>
OR <span name="anyText">anyText</span>
例如:
[[Thanks~1]]
到<span name="Thanks~1">Thanks</span>
和
[[Hello]]
到<span name="Hello">Hello</span>
對於這一點,我已經創建了下面的函數中的NSString類別:
- (NSString*) stringByReplacingOccurrencesOfRegex:(NSString*)regexString withString:(NSString*)replaceWithString {
NSError* error;
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:regexString options:NSRegularExpressionCaseInsensitive error:&error];
NSRange fullrange = NSMakeRange(0,self.length);
return [regex stringByReplacingMatchesInString:self options:NSMatchingWithTransparentBounds range:fullrange withTemplate:replaceWithString];
}
某處在我的代碼,我現在用的是以下:
regexString = @"\\[\\[([^\\]]*)\\]\\]";
replaceWithString = @"<span name=\"$1\">$1</span>";
rawStoryString = [rawStoryString stringByReplacingOccurrencesOfRegex:regexString withString:replaceWithString];
這樣的結果是<span name=\"anyText~number\">anyText~number</span>
。有沒有辦法可以在$1
(說removeTilderAndFurther($1)
,在這種情況下,我的代碼變成replaceWithString = @"<span name=\"$1\">removeTilderAndFurther($1)</span>";
),以便我可以實現我所追求的。
非常感謝Jason。對不起,貪心......是否有可能在這裏引入一個變體...... $ 1變成小寫......即輸出是你好和謝謝 – Amarsh 2013-04-10 06:23:41
@Amarsh我不認爲這可以在模式中完成。 – 2013-04-10 15:44:17