1

我正在使用 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>

在这个断点处,我返回了一个包含右括号的字符串。因此,对于上面显示的示例文本字符串,第一个断点处 NSString *text 的内容是

[is an

为了正确操作字符串,我需要同时使用左括号和右括号。

本质上,我的问题是:如何在一个字符上推进 NSScanner,并将该字符包含到变量“文本”中?

4

1 回答 1

2

您可以跳过]字符scanString

if ([theScanner scanString:@"]" intoString:NULL]) {
    text = [text stringByAppendingString:@"]"];
} else {
    // Next character is not ']'
}

只有在没有匹配字符的else情况下才会发生这种情况。在这种情况下,包含从字符串到结尾的部分。]text[

或者,您可以使用NSRegularExpressionand 例如matchesInString返回字符串中与正则表达式匹配的所有范围的数组的方法。

于 2012-10-17T05:37:08.070 回答