2011-08-20 5 views
0

В моем приложении я хочу показать строку, содержащую новости. Эта строка загружается только из свободного веб-сайта, так что обычный исходный код сайта не содержит только мои строки, его это больше ОС меньше, как это:Вырезать часть длинного NSString

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

И, конечно, я хочу, чтобы отрезать все html, который мне не нужен в моей NSString. Поскольку я собираюсь изменить String fron время от времени, общая длина Исходного кода с сайта изменяется. Это означает, что substringFromIndex не будет работать. Есть ли другой способ конвертировать полный исходный код только в строку, которая мне нужна?

+1

См. http://stackoverflow.com/questions/422138/regular -expressions-in-an-object-c-cocoa-application для получения дополнительной информации о возможностях регулярных выражений. – Flyingdiver

ответ

2

Существует два миллиона способов управления текстом. Я бы начал с регулярных выражений. Если вы дадите более подробную информацию о специфике вашей проблемы, вы можете получить более конкретную помощь.

Редактировать

Спасибо за ссылку на сайт. Это дает мне больше возможностей для работы. Если вы всегда будете знать идентификатор div, содержимое которого вы хотите, вы можете использовать NSXMLParser для извлечения текста div. Это установит текст NSTextField в содержимое div с идентификатором «I3_sys_txt». Я сделал это на 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

Какая информация вам нужна? Веб-сайт: http://maxnerios.yolasite.com/ Я хочу показать !! !!!!! в моем приложении на ярлыке. Если вы посмотрите на исходный код сайта, вы увидите, что есть много кода, а где-то посередине вы найдете !!!!!. Если я сделайте мой ASIHTTPRequest полным исходным кодом веб-сайта. Затем я хочу вырезать !!!!!, чтобы я удалил весь html-код, и я возвращаю только строку, которую вы можете увидеть на веб-сайте. – JonasG

+0

могу ли я также используйте stringByReplacingOccurrencesOfString: to repla прежде всего, перед моей строкой с @ "", а затем частью после моей строки с @ ""? Я не могу проверить какой-либо код прямо сейчас, потому что я прочь. – JonasG

+0

После того, как вы извлекли строку, вы можете добавить и добавить все, что хотите. – SSteve

0

Вот класс NSRegularExpression, что вам нужно использовать: NSRegularExpression

Вот «начало» учебник о том, как использовать класс: Tutorial

Здесь праймер на каких регулярных выражений являются: Regex Primer

Вот онлайн регулярное выражение тестер: Tester

Тестер может работать не так, как NSRegularExpression, но он поможет вам понять определения регулярных выражений в целом. Регулярные выражения являются ключевым инструментом для разработчиков программного обеспечения, сначала немного сложным, но они могут быть использованы для большого эффекта при поиске или манипулировании строками.

Хотя это выглядит как большая работа - нет быстрого ответа на то, что вы пытаетесь сделать. Вы говорите: «Есть ли другой способ конвертировать полный исходный код только в нужную строку?» - ответ да - регулярные выражения, но вам нужно определить, что означает «только строка, которая мне нужна», а регулярные выражения - один из важных способов.

Смежные вопросы