2

What is the right way to trim characters in foundCharacters of NSXMLParser?

I've found many examples that do it like this:

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

Yet a space followed by a non-ASCII character is trimmed when I run the above. Example: "this é" will become "thisé".

4

2 回答 2

2

然而,当我运行上述代码时,会修剪一个后跟非 ASCII 字符的空格。示例:“thisé”将变为“thisé”。

也许是巧合。

见讨论parser:foundCharacters:

解析器对象可以向委托发送几个 parser:foundCharacters: 消息来报告元素的字符。因为字符串可能只是当前元素的全部字符内容的一部分,所以您应该将它附加到当前的字符累积中,直到元素发生变化。

如果你修剪空格this(最后有一个你看不到的空格),那么é你最终会得到thisé.

我从未使用过 NSXMLParser,但也许你应该修剪parser:didEndElement:namespaceURI:qualifiedName:. 据我了解,该元素将在那时完成。

但我只是猜测。

于 2011-02-19T17:24:28.553 回答
0

这就是我过去用来修剪空白而没有任何问题的方法。

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

}

唯一的区别是它使用了稍微不同的空白字符集。

于 2011-02-19T18:55:42.773 回答