0

我在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 代码,我猜它在语音输出中是一样的)。因为我有很短的时间来解决,请帮帮我...提前谢谢..

4

1 回答 1

1

您的代码将 JavaScript 文件转换为语音,在您的代码中您不会加载 HTML 文件,更不用说从中过滤文本了。我也怀疑您提到的 JavaScript 程序是否真的可以帮助您实现这一点,对我来说,它看起来只适合在您已经知道的页面上查找和突出显示部分文本。

我建议您查看NSScannerApple 文档),您可以使用它来过滤 HTML 文件中的相关位,而无需使用外部 JavaScript 程序。不过,这需要一些摆弄。如果你有完美的 HTML,NSXMLParser那将是一个更简单的解决方案,但我不确定你是否可以依赖它。第三方框架可能有现成的解决方案,但不幸的是,我无法就此提供建议。Stack Exchange 上的这个问题也可能有帮助:extract the text only from html content in objective C

不管 HTML 解析如何,无论如何,您的代码中都会发生一些奇怪的事情。例如,当您稍后覆盖四行而不触及它时,为什么要将(NSString *) text其作为方法的参数?以及为什么麻烦的逐个字符复制into ?speakText:texttextcleanString

于 2012-05-29T14:40:23.930 回答