2

NSTask を使用して実行したシェル コマンドの出力を解析しようとしています。特定の部分文字列を探すだけで十分ですが、部分文字列だけが見つかりません。

これまでの私のコード:

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に含まれていても、常に「見つかりません」と出力されます。前もって感謝します。

4

2 に答える 2

0

私は間違っていました。コマンドの出力は実際には空です (そのため、探した文字列は明らかに見つかりませんでした)。NSLog 呼び出しの結果として期待していたのは、実際にはコンソールへのコマンドの直接出力 (stderr?) でした。そのために残念 :(。

于 2012-11-01T15:35:13.457 に答える
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!");
}

私が明確であることを願っています..

于 2012-11-01T12:34:21.410 に答える