NSScanner中的额外字符(objective-C)
我在NSScanner中解析字符串时遇到一个小问题。我读过其他关于这方面的文章,但无法解决这个愚蠢的问题 我有这样一个字符串“第一个单词不等于第二个单词” 我的代码是:NSScanner中的额外字符(objective-C),objective-c,nsscanner,Objective C,Nsscanner,我在NSScanner中解析字符串时遇到一个小问题。我读过其他关于这方面的文章,但无法解决这个愚蠢的问题 我有这样一个字符串“第一个单词不等于第二个单词” 我的代码是: NSString *seperator = @" ="; NSCharacterSet *newLineCharacterSet = [NSCharacterSet newlineCharacterSet]; [scanner scanUpToString:seperator intoString:&firstStr
NSString *seperator = @" =";
NSCharacterSet *newLineCharacterSet = [NSCharacterSet newlineCharacterSet];
[scanner scanUpToString:seperator intoString:&firstString];
[scanner scanString:seperator intoString:NULL];
scanPosition = [scanner scanLocation];
//scanPosition = scanPosition +2;
secondString = [[scanner string] substringFromIndex:scanPosition];
[scanner scanUpToCharactersFromSet:newLineCharacterSet intoString:&secondString];
NSLog(@"firstString: %@", firstString);
NSLog(@"secondString: %@", secondString);
问题是我将分隔符作为第二个字符串的一部分
firstString: "the first word is not"
secondString is "= to the second word"
所以你想分开这些字符串?您可以使用NSString的
组件通过string
方法分离
NSArray* foo = [@"the first word is not = to the second word" componentsSeparatedByString: @"="];
NSString *firstString = foo[0]; //the first word is not
NSString *secondString = foo[1]; // to the second word
如果要使用扫描仪,必须将扫描仪的位置移过分隔符,正如您在代码中注释的那样。以下是我在Xcode中运行的内容:
NSString *seperator = @" =";
NSCharacterSet *newLineCharacterSet = [NSCharacterSet newlineCharacterSet];
NSScanner *scanner = [NSScanner localizedScannerWithString:@"the first word is not = to the second word"];
//NSString *firstString; //= @"the first word is not = to the second word";
NSString *secondString;
int scanPosition;
NSString *foundSubs;
[scanner scanUpToString:seperator intoString:&foundSubs];
//[scanner scanString:seperator intoString:NULL];
scanPosition = [scanner scanLocation];
//scanPosition = scanPosition +2;
secondString = [[scanner string] substringFromIndex:scanPosition+[seperator length]];
//[scanner scanUpToCharactersFromSet:newLineCharacterSet intoString:&secondString];
NSLog(@"firstString: %@", foundSubs);
NSLog(@"secondString: %@", secondString);
得到:
2014-08-11 11:56:10.495 tester[3068:60b] firstString: the first word is not
2014-08-11 11:56:10.496 tester[3068:60b] secondString: to the second word
为了子孙后代,请检查“separator”的拼写非常感谢,欢迎光临。非常感谢您的回答。我希望这个世界会改变separator的拼写,但我想不会的……谢谢!很高兴这有助于Hank的回答,但我想继续使用扫描仪,因为我想做更多的过滤。。。所以+1,但我给了第一次海报的结尾。。。