首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSCharacterSet裁剪字符串

NSCharacterSet裁剪字符串
EN

Stack Overflow用户
提问于 2012-04-27 02:15:34
回答 2查看 487关注 0票数 0

我得到了最新的推特,并显示在我的应用程序。我将其放入一个NSMutableString中,并在xmlparser.m文件中初始化该字符串,如下所示:

代码语言:javascript
复制
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

我可以得到推特,但不知怎的,它削减了一些推文,并显示了它的一部分。例如,tweet是

在教室里玩电子游戏?社交媒体&#科技可以改变教育-- http://bit.ly/KfGViF @执政#edtech

但它所显示的是:

#技术可以改变教育http://bit.ly/KfGViF @治理#edtech

你觉得这是为什么?我试图以其他方式初始化currentNodeContent,但我无法解决这个问题。

你知道为什么会发生这种事吗?

EN

回答 2

Stack Overflow用户

发布于 2012-04-27 02:29:24

事件驱动(SAX)解析器可以在回调中只返回节点部分文本。你可能只会收到部分推文。您可能应该在可变字符串中积累字符,直到得到指示元素结束的回调为止。请参见清单3和本指南中的周围文本。

票数 1
EN

Stack Overflow用户

发布于 2012-04-27 04:10:40

你这里有两个问题:

代码语言:javascript
复制
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

简单地将NSString转换为NSMutableString是行不通的。您必须自己创建一个可变的副本,或者使用一个NSMutableString的内容初始化一个新的NSString

此外,文本解析器只给出字符串的最后一部分,因为它可能只是将'&‘解释为实体引用的一部分,也可能是实体引用本身。

你可能想做的是:

  1. 在开始解析之前,初始化currentNodeContent以便它是一个空的NSMutableString: currentNodeContent = NSMutableString字符串;
  2. 在解析过程中,将这些字符附加到currentNodeContent: [ stringByTrimmingCharactersInSet:NSCharacterSet whitespaceAndNewlineCharacterSet] [currentNodeContent appendString:[string whitespaceAndNewlineCharacterSet];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10343940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档