2014-11-08 85 views
0

我有varius日志文件要读取。每个日志都包含设备(打印机)的报告。 我能找到的是始终单词“固件:”随后的固件版本,如:使用NSString找到匹配后的词

PTRE firmware: XER8673B2 

日志似乎并不非常有序的,由此该文本的位置并不总是在同一个点或者在同一行上,但始终处于“PTRE firmawre:XXXXXXX”格式。 我如何找到XER8673B2?任何帮助表示赞赏。

解决(感谢@罗马sausarnes),这是代码:

NSString *stringToSearch = [[NSString alloc] initWithContentsOfFile:@"path/to/log" encoding:NSUTF8StringEncoding error:nil]; 
NSString *preMatchString = @"PTRE firmware: "; 
NSString *terminatingCharacter = @" "; 
NSString *result = [[NSString alloc] init]; 

NSScanner *scanner = [NSScanner scannerWithString:stringToSearch]; 
[scanner scanUpToString:preMatchString intoString:NULL]; 
[scanner scanString:preMatchString intoString:NULL]; 
[scanner scanUpToString:terminatingCharacter intoString:&result]; 
NSLog(@"It's : %@", result); 

输出是

It's : XER8673B2 
+0

'NSRegularExpression'? – Larme 2014-11-09 05:05:00

+0

对不起,我正在尝试你的建议,但我从来没有用过,可能还没有能够... – Mike97 2014-11-11 12:12:27

回答

1

NSScanner。该守则将是这个样子:

NSString *stringToSearch = theStringThatYouWantToSearch; 
NSString *preMatchString = @"firmware: "; 
NSString *terminatingCharacter = " "; 
NSString *result = [[NSString alloc] init]; 

NSScanner *scanner = [NSScanner scannerWithString:stringToSearch]; 
[scanner scanUpToString:preMatchString intoString:NULL]; 
[scanner scanString:preMatchString intoString:NULL]; 
[scanner scanUpToString:terminatingCharacter intoString:&result]; 

最后,result应该是后进来的字符串:下一个尾随空格之前(”“),但“固件”。

+0

这项工作真的很好:-)。用你的代码更新我的问题.. – Mike97 2014-11-11 12:10:52

相关问题