我只是想知道是否有一种更简单的方法可以在Objective C中找到字符串中的子字符串。
我的字符串问题是:(我知道凌乱......)
filename.cpp - line: 1 "comment 1"\nfilename.cpp - line: 1 "comment 2"\nfilename.cpp - line: 1 "comment 3"\n
所以我想做的是将引号之间的所有位提取到数组中。我一直在搞乱 componentsSeparatedByString 方法,试图操纵字符串足以让我留下“评论”,但这似乎是一种非常混乱的方式。
感谢您的帮助!
答案 0 :(得分:1)
也许我并不准确理解你的问题,但是:
如果要解析的字符串始终以不包含的内容开头,即如果要提取的第一个子字符串不在字符串的开头,则可以使用
NSMutableArray *components = [NSMutableArray arrayWithArray: [yourString componentsSeparatedByString:@"\""]];
for (int i=0; i<components.count; i++) {
[components removeObjectAtIndex:i];
}
答案 1 :(得分:0)
您可以使用NSScanner扫描\"
并将所有其他子字符串存储在数组中
NSString *string = @"filename.cpp - line: 1 \"comment 1\"\nfilename.cpp - line: 1 \"comment 2\"\nfilename.cpp - line: 1 \"comment 3\"\n";
NSScanner *scanner = [NSScanner scannerWithString:string];
NSMutableArray *array = [NSMutableArray array];
while (YES) {
NSString *s;
[scanner scanUpToString:@"\"" intoString:NULL];
[scanner setScanLocation:[scanner scanLocation]+1];
[scanner scanUpToString:@"\"" intoString:&s];
if(s)
[array addObject:s];
if(![scanner isAtEnd])
[scanner setScanLocation:[scanner scanLocation]+1];
else break;
}
结果:
array = (
comment 1,
comment 2,
comment 3
)