本文将用一个例子帮助你理解如何使用NSTask,例子通过在Cocoa中执行一个perl脚本,实现去掉给定NSString中的所有HTML标签。
这里是一个简单的perl脚本,文件名是stripper.pl,功能是去掉所有HTML标签。
#!/usr/bin/perl
while (<>) {
$_ =~ s/<[^>]*>//gs;
print
$_;
}
记得把这个脚本chmod +x,将它加入项目中,即得把它复制进执行文件包内。
这个方法会将string参数直接传递给perl脚本,并将结果返回。
- (NSString *) stringStrippedOfTags: (NSString *) string
{
NSBundle *bundle = [NSBundle
mainBundle];
NSString *stripperPath;
stripperPath = [bundle
pathForAuxiliaryExecutable:
@"stripper.pl"];
NSTask *task = [[NSTask
alloc] init];
[task
setLaunchPath: stripperPath];
NSPipe *readPipe = [NSPipe
pipe];
NSFileHandle *readHandle = [readPipe fileHandleForReading];
NSPipe *writePipe = [NSPipe
pipe];
NSFileHandle *writeHandle = [writePipe fileHandleForWriting];
[task
setStandardInput: writePipe];
[task
setStandardOutput: readPipe];
[task
launch];
[writeHandle
writeData: [string dataUsingEncoding:
NSASCIIStringEncoding]];
[writeHandle
closeFile];
NSMutableData *data = [[NSMutableData
alloc] init];
NSData *readData;
while ((readData = [readHandle availableData])
&& [readData
length]) {
[data
appendData: readData];
}
NSString *strippedString;
strippedString = [[NSString
alloc]
initWithData: data
encoding:
NSASCIIStringEncoding];
[task
release];
[data
release];
[strippedString
autorelease];
return (strippedString);
}
本文介绍如何利用Cocoa中的NSTask类执行一个Perl脚本,该脚本能够从给定的NSString中移除所有HTML标签。通过提供一个简单的Perl脚本实例,演示了如何将字符串参数传递给脚本并获取结果。
4320

被折叠的 条评论
为什么被折叠?



