我需要将文本转换为以下两种格式之一:
[[anyText~number]]
或者[[anyText]]
到各自的html格式:
<span name="anyText~number">anyText</span>
或者<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>";
)进行操作,这样我就可以实现我所追求的。