如何解决如何在NSString中遍历各个NSString? 语法突出显示/着色
| 我正在制作Brainfuck(编程语言)IDE,并且语法一直停留在上面。 我想用子字符串预定义NSDictionary
,并循环遍历
返回具有(或循环遍历)给定字符串中子字符串范围的数组。
例:
NSMutableDictionary* keywords = [[NSMutableDictionary alloc] init];
[keywords setObject:[self colorForSymbol:0] forKey:@\"<\"];
[keywords setObject:[self colorForSymbol:0] forKey:@\">\"];
[keywords setObject:[self colorForSymbol:1] forKey:@\"+\"];
[keywords setObject:[self colorForSymbol:1] forKey:@\"-\"];
然后,对于每个符号,我将使用“ 4”的“ 3”对所有匹配的“ 2”进行着色。
我需要知道的是如何使用ѭ5或类似的东西来实现此目的。
解决方法
我对这个问题的回答可能会有助于将语法着色与
NSTextView
挂钩。
要进行实际的标记化,您应该看一下NSScanner
。对于每个标记,您可能需要多次分析文本。您也可以使用正则表达式,例如RegexKitLite。
这是NSScanner的简单演示:
NSScanner* scanner = [NSScanner scannerWithString:@\"A string <with> <tokens>\"];
NSString* token = @\"<\";
NSMutableArray* ranges = [NSMutableArray array];
while(![scanner isAtEnd])
{
[scanner scanUpToString:token intoString:nil];
if(![scanner isAtEnd])
{
NSRange tokenRange = NSMakeRange([scanner scanLocation],1);
[ranges addObject:[NSValue valueWithRange:tokenRange]];
[scanner scanString:token intoString:nil];
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。