Обрезка символов NSXMLParser - PullRequest
       28

Обрезка символов NSXMLParser

2 голосов
/ 19 февраля 2011

Как правильно обрезать символы в foundCharacters из NSXMLParser?

Я нашел много примеров, которые делают это так:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
        NSString *characters = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        // Append to previous characters of the same element
}

Все же пробелсопровождаемый не-ASCII символом обрезается, когда я запускаю вышеупомянутое.Пример: «this é» станет «thisé».

Ответы [ 2 ]

2 голосов
/ 19 февраля 2011

Тем не менее, пробел, за которым следует не-ASCII символ, обрезается, когда я запускаю вышеизложенное. Пример: "this é" станет "thisé".

возможно по стечению обстоятельств.

См. Обсуждение parser:foundCharacters:

Объект синтаксического анализатора может отправить делегату несколько синтаксических анализаторов: foundCharacters: messages , чтобы сообщить о символах элемента. Поскольку строка может быть только частью общего символьного содержимого для текущего элемента, вы должны добавить его к текущему накоплению символов, пока элемент не изменится.

И если вы урежете пробел с this (с пробелом в конце, который вы не видите), а затем с é вы получите thisé.

Я никогда не использовал NSXMLParser, но, возможно, вам следует обрезать строку в parser:didEndElement:namespaceURI:qualifiedName:. Из того, что я понимаю, элемент будет завершен тогда.

Но я просто догадываюсь.

0 голосов
/ 19 февраля 2011

Это то, что я использовал в прошлом, чтобы без проблем обрезать пробелы.

- (NSString *)trim:(NSString *)inStr {
    return [inStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

}

Единственное отличие состоит в том, что он использует немного другой набор символов пробела.

...