我在http://zaldzbugz.posterous.com/how-to-search-a-string-inside-uiwebview中使用javascript程序来解析html页面和以下方法
-(void)speakText:(NSString *)text
{
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"UIWebViewSearch" ofType:@"js" inDirectory:@""];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
text =jsString;
NSMutableString *cleanString;
cleanString = [NSMutableString stringWithString:@""];
if([text length] > 1)
{
int x = 0;
while (x < [text length])
{
unichar ch = [text characterAtIndex:x];
[cleanString appendFormat:@"%c", ch];
x++;
}
}
if(cleanString == nil)
{ // string is empty
cleanString = [NSMutableString stringWithString:@""];
}
sound = flite_text_to_wave([cleanString UTF8String], voice);
NSArray *filePaths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *recordingDirectory = [filePaths objectAtIndex: 0];
// Pick a file name
NSString *tempFilePath = [NSString stringWithFormat: @"%@/%s", recordingDirectory, "temp.wav"];
// save wave to disk
char *path;
path = (char*)[tempFilePath UTF8String];
cst_wave_save_riff(sound, path);
// Play the sound back.
NSError *err;
[audioPlayer stop];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:tempFilePath] error:&err];
[audioPlayer setDelegate:self];
//[audioPlayer prepareToPlay];
[audioPlayer play];
// Remove file
[[NSFileManager defaultManager] removeItemAtPath:tempFilePath error:nil];
delete_wave(sound);
}
将文本转换为语音输入。我在文本字段中听到一些编码格式而不是html文本(当我做NSLog(jsstring)时,我得到了整个javascript代码,我猜它在语音输出中相同) 。 因为我的解决时间很短,请帮帮我... 提前谢谢..
答案 0 :(得分:1)
您的代码会将JavaScript文件转换为语音,您的代码中任何时候都不会加载HTML文件,更不用说过滤掉文本了。我也怀疑你所引用的JavaScript程序实际上可以帮助你实现这一点,对我而言,它看起来只适合查找和突出显示你已经知道的页面上的文本部分。
我建议您查看NSScanner
(Apple docs),您可以使用它来过滤相关位的HTML文件,而无需使用外部JavaScript程序。虽然这需要一些摆弄。如果你有完美的HTML,NSXMLParser
将是一个更简单的解决方案,但我不确定你是否可以依赖它。可能有现成的解决方案与第三方框架,但不幸的是我无法就此提出建议。 Stack Exchange上的这个问题也可能有所帮助:extract the text only from html content in objective C
无论HTML解析如何,代码中都会发生一些奇怪的事情。例如,为什么将(NSString *) text
作为speakText:
方法的参数,当您在以后覆盖text
四行而不触及它时?为什么将text
复制到cleanString
?