NSXMLParser 的修剪字符

发布于 2024-10-18 07:47:03 字数 452 浏览 4 评论 0原文

修剪 NSXMLParserfoundCharacters 中的字符的正确方法是什么?

我发现了很多这样做的例子:

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

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

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é".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

宫墨修音 2024-10-25 07:47:03

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

也许是巧合。

请参阅 parser:foundCharacters: 的讨论

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

如果你修剪 this 中的空格(末尾有一个你看不到的空格),然后从 é 中删除,你最终会得到 thisé< /代码>。

我从未使用过 NSXMLParser,但也许您应该修剪 parser:didEndElement:namespaceURI:qualifiedName: 中的字符串。据我了解,该元素届时将完成。

但我只是猜测。

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

maybe by coincidence.

See the discussion of parser:foundCharacters:

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.

And if the you trim the whitespace from this (with a space at the end you can't see) and then from é you will end up with thisé.

I've never used NSXMLParser, but maybe you should trim the string in parser:didEndElement:namespaceURI:qualifiedName:. From what I understand, the element will be completed then.

But I'm just guessing.

哀由 2024-10-25 07:47:03

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

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

}

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

This is what I've used in the past to trim whitespace without any problems.

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

}

The only difference is that It's using a slightly different whitespace character set.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文