Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NSScanner中的额外字符(objective-C)_Objective C_Nsscanner - Fatal编程技术网

NSScanner中的额外字符(objective-C)

NSScanner中的额外字符(objective-C),objective-c,nsscanner,Objective C,Nsscanner,我在NSScanner中解析字符串时遇到一个小问题。我读过其他关于这方面的文章,但无法解决这个愚蠢的问题 我有这样一个字符串“第一个单词不等于第二个单词” 我的代码是: NSString *seperator = @" ="; NSCharacterSet *newLineCharacterSet = [NSCharacterSet newlineCharacterSet]; [scanner scanUpToString:seperator intoString:&firstStr

我在NSScanner中解析字符串时遇到一个小问题。我读过其他关于这方面的文章,但无法解决这个愚蠢的问题

我有这样一个字符串“第一个单词不等于第二个单词”

我的代码是:

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,但我给了第一次海报的结尾。。。