我们希望按特定字符拆分字符串而不删除字符。
例如,如果输入为:if (x>4) then {x = 1}
输出必须是:if, (, x, >, 4, ), then, {, x, =, 1, }
characterSetWithCharactersInString
,但它会删除字符串中的字符.. 谢谢!
答案 0 :(得分:0)
查看NSScanner。
然后执行类似
的操作 NSScanner *scanner = [NSScanner scannerWithString:myString];
BOOL foundIf = [scanner scanString:@"if" intoString:nil];
// etc...
答案 1 :(得分:0)
如果您还没有弄明白,以下内容将起作用:
NSString *input = @"if (x>4) then {x = 1}";
NSMutableArray *splitArray = [NSMutableArray array];
NSCharacterSet *specialChars = [NSCharacterSet characterSetWithCharactersInString:@"(){}[]<>{}="];
NSScanner *scanner = [NSScanner scannerWithString:input];
while (![scanner isAtEnd])
{
NSString *buffer;
if ([scanner scanCharactersFromSet:[NSCharacterSet alphanumericCharacterSet] intoString:&buffer])
{
[splitArray addObject:buffer];
}
else if ([scanner scanCharactersFromSet:specialChars intoString:&buffer])
{
[splitArray addObject:buffer];
}
else
{
[scanner setScanLocation:[scanner scanLocation] + 1];
}
}
NSLog(@"%@", splitArray);
您可以在specialChars中添加您想要的任何字符。
PS:我今天第一次阅读有关NSScanner的内容,这是一个很好的练习,可以真实地使用它!我建议你仔细阅读https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/Scanners.html