【问题标题】:NSXMLParser adds extra characters to every stringNSXMLParser 为每个字符串添加额外的字符
【发布时间】:2010-06-24 12:29:59
【问题描述】:

我正在创建一个简单的 FeedReader iPhone 应用程序,其中 RSS 是使用 NSXMLParser 解析的提要。解析 RSS 的代码是类似于here 所示的标准代码。

但我注意到每个解析的元素末尾都有 '\n\t\t' 字符。 例如。

link = "http://bakery.cakephp.org/articles/view/exporting-data-to-csv-the-cakephp-way\n\t\t\t";
date = "Fri, 23 Apr 2010 10:02:55 -0500\n\t\t\t";

因此,我无法使用该链接将其提供给 NSWebView,并且它包含非法字符。即使我使用类似

NSString *storyURL = [NSString stringWithFormat:@"%@", self.selectedURL];
NSString *webURL = [storyURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

网址无效。例如。

http://bakery.cakephp.org/articles/view/creating-pdf-files-with-cakephp-and-tcpdf%0A%09%09%09

这显然会产生 404 错误。

有什么方法可以去掉每个解析字符串末尾的多余字符?

谢谢。

【问题讨论】:

    标签: iphone nsxmlparser


    【解决方案1】:

    那些是control characters。在您的示例中,有一个换行符,然后是三个制表符,可能用于缩进。要剥离它们,您可以使用NSString 和NSArray 中的几种方法。

    //This breaks the given string apart at the control characters
    //This will find all of the control characters in the string
    NSArray *brokenStrings = [dirtyString componentsSeparatedByCharactersInSet:[NSCharacterSet controlCharacterSet]];
    //Now join them back together
    NSString *cleanString = [brokenStrings componentsJoinedByString:@""];
    

    当componentsSeparatedByCharactersInSet: 遇到控制字符之一时,它在数组中由一个空白字符串表示。

    为了获得更多指导,here 回答了一个类似的问题,here 讨论了这个确切的问题,但方式更复杂。

    【讨论】:

    • 谢谢。那行得通。但是我没有加入字符串,而是使用了 brokenStrings 数组的第一个元素。
    • 这在您的示例中有效,但如果您有一个字符串,例如 'bananas\n\t in pajamas\n\t\t are walk down the ladder',您只会得到 'bananas '而不是'穿着睡衣的香蕉正在下楼梯'
    • 非常正确。对于此类问题,您有通用解决方案吗?
    • 将它们与componentsJoinedByString: 重新连接在一起,就像我给出的示例一样。
    猜你喜欢
    • 2020-11-25
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2021-06-22
    • 2013-08-30
    相关资源
    最近更新 更多