2011-08-20 14 views
0

私のアプリでは、ニュースを含むStringを表示したいと思います。ウェブサイトのプレーンなソースコードは私の文字列が含まれていないので、この文字列は、ちょうど無料のウェブサイトからロードされて、そのはあまりこのようなより多くのOSである:長いNSStringの一部を切り捨てます

Stuff 
More Stuff 
More HTML Stuff 
My String 
More HTML Stuff 
Final Stuff 

そしてもちろん、私はすべて遮断したいです私は自分のNSStringで必要としないHTMLのもの。私は文字列fronの時間を変更するつもりなので、ソースコードの全体の長さは、Webサイトの変更からです。つまり、substringFromIndexは動作しません。完全なソースコードを私が必要とする文字列に変換する他の方法はありますか?

+1

http://stackoverflow.com/questions/422138/regularを参照してください。正規表現機能の詳細については、objective-c-cocoaアプリケーションの表現を参照してください。 – Flyingdiver

答えて

2

テキストを操作する方法は数多くあります。私は正規表現から始めます。問題の詳細についてさらに詳しく説明すると、より具体的なヘルプを得ることができます。ウェブサイトへのリンクの

編集

感謝。それは私にもっと働きかけるものです。内容が必要なdivのIDを常に知っている場合は、NSXMLParserを使用してdivのテキストを抽出できます。これは、NSTextFieldのテキストをid "I3_sys_txt"のdivの内容に設定します。私はこれをMacでやったが、iPhoneでもうまくいくと思う。ここで

-(IBAction)buttonPressed:(id)sender { 
    captureCharacters = NO; 
    NSURL *theURL = [NSURL URLWithString:@"http://maxnerios.yolasite.com/"]; 
    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:theURL]; 
    [parser setDelegate:self]; 
    [parser parse]; 
    [parser release]; 
} 

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { 
    if ([elementName isEqual:@"div"] && [[attributeDict objectForKey:@"id"] isEqual:@"I3_sys_txt"]) { 
     captureCharacters = YES; 
     divCharacters = [[NSMutableString alloc] initWithCapacity:500]; 
    } 
} 

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
    if (captureCharacters) { 
     //from parser:foundCharacters: docs: 
     //The parser object may send the delegate several parser:foundCharacters: messages to report the characters of an element. 
     //Because string may be only part of the total character content for the current element, you should append it to the current 
     //accumulation of characters until the element changes. 
     [divCharacters appendString:string]; 
    } 
} 

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
    if (captureCharacters) { 
     captureCharacters = NO; 
     [textField setStringValue:divCharacters]; 
     [divCharacters release]; 
    } 
} 
+0

必要な情報は?Webサイトはhttp://maxnerios.yolasite.com/です。 !!!!!私のアプリケーションのラベルであなたがサイトのソースコードを見れば、たくさんのコードがあることがわかりますし、途中でどこかに!!!!!が見つかります。もし私が私のASIHTTPRequestをウェブサイトのリターンの完全なソースコードにしてください。そして、私は!!!!!をカットして、すべてのHTMLコードを削除して、ウェブサイトで見ることができる文字列を返します。 – JonasG

+0

また、stringByReplacingOccurrencesOfString:を使用してレプリカを作成する私の文字列の前の部分は@ ""で始まり、次に "@" "の文字列の後の部分は?私は離れているので、私はすぐにコードをテストすることはできません。 – JonasG

+0

抽出した文字列を取得したら、必要なものの前に追加して追加することができます。 – SSteve

0

は、あなたが使用する必要がNSRegularExpressionクラスである:ここでNSRegularExpression

は、クラスを使用する方法についての「始まり」のチュートリアルです:ここではTutorial

は、正規どのような表現上のプライマーであります以下のとおりです。ここではRegex Primer

は、オンライン正規表現テスターです:Tester

テスターはNSRegularExpressionと正確には動作しないかもしれませんが、一般的な正規表現の定義を理解するのに役立ちます。正規表現は、ソフトウェア開発者のための重要なツールですが、最初は少し気になりますが、文字列の検索や操作に大きな効果を発揮します。

これは多くの作業のように見えますが、試みていることに対して「迅速な回答」はありません。 「完全なソースコードを必要な文字列に変換する他の方法はありますか?答えは「はい」です。正規表現ですが、「必要な文字列」が何であるかを定義する必要があります。正規表現は重要な方法の1つです。

関連する問題