읽을 varius 로그 파일이 있습니다. 각 로그에는 장치 (프린터)에 대한 보고서가 포함됩니다. 내가 찾을 수있는 것은 항상 'firmware :'라는 단어와 다음과 같은 펌웨어 개정판입니다.
PTRE firmware: XER8673B2
로그는 순서가별로없는 것 같습니다. 따라서이 텍스트의 위치는 항상 같은 지점이나 같은 줄에 있지는 않지만 항상 "PTRE firmawre : XXXXXXX"형식입니다. XER8673B2를 어떻게 찾을 수 있습니까? 도움을 주시면 감사하겠습니다.
해결 (@ roman-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
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
"firmware :"뒤에 있지만 다음 후행 공백 ( "") 앞에 오는 문자열이어야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다