我正在使用NSScanner检测字符串中[方括号]绑定的文本,并将其转换为HTML超链接。我希望以下列方式转换此文本:
This [is an] example of the [text] I'm using
应转换为
This <a href = "is an">is an</a> example of the <a href = "text">text</a> I'm using
我已经实现了NSScanner,但为了使其正常工作,我需要提取方括号的第一个和第二个。
这是我的代码的当前状态:
NSScanner *theScanner;
NSString *text = nil;
theScanner = [NSScanner scannerWithString:stringWithBrackets];
NSString *stringWithoutBrackets;
while ([theScanner isAtEnd] == NO) {
[theScanner scanUpToString:@"[" intoString:NULL];
[theScanner scanUpToString:@"]" intoString:&text];
<BREAK>
在此断点处,我返回了一个字符串, not 包含结束括号。因此,对于上面显示的示例文本字符串,第一个断点处的NSString * text的内容为
[is an
为了正确操作字符串,我需要同时使用开始和结束括号。
基本上,我的问题是:如何在一个字符上推进NSScanner,并将该字符包含在变量'text'中?
答案 0 :(得分:2)
您可以使用]
跳过scanString
个字符:
if ([theScanner scanString:@"]" intoString:NULL]) {
text = [text stringByAppendingString:@"]"];
} else {
// Next character is not ']'
}
只有在没有匹配的else
字符时才会发生]
情况。 text
包含[
到该字符串末尾的部分。
或者,您可以使用NSRegularExpression
,例如matchesInString
方法,返回与正则表达式匹配的字符串中所有范围的数组。