我正在尝试解析我使用NSTask执行的shell命令的输出。寻找特定的子串就足够了,只找不到子串。
到目前为止我的代码:
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *string;
string = [[NSString alloc] initWithData: data
encoding: NSUTF8StringEncoding];
NSLog(string);
if([string rangeOfString:@"Connection refused"].location != NSNotFound) {
NSLog(@"found");
} else {
NSLog(@"not found");
}
即使搜索到的子字符串包含在变量 string 中,也始终打印“not found”。提前谢谢。
答案 0 :(得分:0)
我很惊讶但是当我反过来写这个条件的时候。有效。 请查看以下示例:
NSString *string = @"hello bla Connection refused Connection refused bla";
if ([string rangeOfString:@"Connection refused"].location == NSNotFound) {
NSLog(@"string does not contain Connection refused");
} else {
NSLog(@"string contains Connection refused!");
}
希望我很清楚..
答案 1 :(得分:0)
我错了。该命令的输出实际上是空的(因此显然找不到查找的字符串)。我期望NSLog调用的结果实际上是命令直接输出到控制台(stderr?)。对不起:(。