2012-07-04 6 views
-4

Я пытаюсь отсканировать текст, но я не понимаю, как это работает, может кто-нибудь мне помочь?Использование NSScanner

<a class="lightbox" title ="elecciones mexico 2012" href="http://www.myWebpage.com/wp-content/uploads/2012/07/elecciones-mexico-2012.jpg"><img src="http://www.myWebpage.com/wp-content/uploads/2012/07/elecciones-mexico-2012.jpg" alt="" title="elecciones mexico 2012" width="643" height="391" class="aligncenter size-full wp-image-66795" /></a></p> 
<p>I need this text</p> 
<p> And this text.</p> 
<p> Also this text! </p> 

<p> I dont want this text </p>]]> 

Так что моя последняя строка будет что-то вроде: мне нужен этот текст И этот текст Также этот текст!

Заранее благодарим

+1

ли вы поиск на всех на этом сайте или в Интернете? Хороший первый шаг. –

+0

Да, но я не знаю, как использовать NSScanner ... – user1179587

+1

Вы понимаете Objective-C вообще, или вы новичок в этом? Obj-C может быть странным. :) Вы посмотрели на это? https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/Scanners.html – Almo

ответ

0

Отбросить ваш выстрел. Вот почему NSXMLParser существует.

@interface TextParser: NSObject { 
    NSMutableString *text; 
} 

- (id)init 
{ 
    if ((self = [super init])) 
    { 
     text = [[NSMutableString alloc] init]; 
     NSXMLParser *parser = [[NSXMLParser alloc] initWithData:[string dataUsingEncoding:NSUTF8Stringaencoding]; 
     parser.delegate = self; 
     [parser parse]; 

     // here text will contain all the text contained by the XML tags 
    } 
    return self; 
} 

- (void)parser:(NSXMLParser *)p foundCharacters:(NSString *)chars 
{ 
    [text appendString:chars]; 
} 
0

Ну, NSScanner, что я знаю (MacOS) не особенно подходит для вида разбора вы ищете. Он просто проходит через строку и возвращает «токены», как числа или строки, определенные набором символов, из которых они сделаны. Это не особенно полезно для обработки тегов в вашем примере строки, если вы не согласны с высокой вероятностью ошибок.

В этом случае вы, вероятно, можете сделать что-то вроде «прочитайте строку, состоящую из чего угодно, кроме <» и приложите ее к строке результатов, затем «прочитайте строку, состоящую из чего угодно, кроме>» и отбросьте это и так далее, пока вы не достигнете конца. В зависимости от того, что вы на самом деле пытаетесь разобрать, это может или не может работать; это определенно не «способ» получить простой текст из HTML.

Это не XML либо (метки не совпадают), поэтому использование NSXML вероятно, это не вариант либо ...