CHCSVParser 2.1.0

CHCSVParser 2.1.0

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

Dave DeLong维护。



CHCSVParser 是一个 CSV 文件的 Objective-C 解析器。

支持的平台

  • Mac OS X 10.7+
  • iOS 6+

使用方法

为了使用 CHCSVParser,您需要在项目中包含以下两个文件:

  • CHCSVParser.h
  • CHCSVParser.m

CHCSVParser 需要 ARC。

解析

CHCSVParserNSXMLParser 类似,它在解析数据时同步调用代理回调方法,以便您知道它已找到字段、已读取完一行或遇到了语法错误。

CHCSVParser 可以通过以下三种方式之一创建:

  1. 使用文件的 URL
  2. 使用 NSString 的内容
  3. 使用 NSInputStream

CHCSVParser 可以配置为解析其他“字符分隔”文件格式,如“TSV”(制表符分隔)。您可以在初始化期间指定解析器的分隔符。分隔符只能是一个字符长度,不能是换行符或 "。此外,根据您在解析器上设置的选项,您可能无法使用 #\= 作为分隔符。

默认情况下,CHCSVParser 将不会净化字段输出;换句话说,字段将以与 CSV 文件中找到的完全相同的方式返回。但是,如果您希望字段被清理(周围的引号被去除,字符未转义等),您可以设置 sanitizesFields 属性为 YES 来实现这一点。

CHCSVParser 有其他属性可以改变解析行为

  • recognizesBackslashesAsEscapes 允许您解析使用反斜杠转义的特殊字符(分隔符、换行符等)的定义文件。当此选项启用时,您不能使用反斜杠作为分隔符。此选项默认禁用。

  • recognizesComments 将跳过解析以数字符号(#)开头的字段。这些字段被视为注释报告给解析器代理,并且注释由一个未转义的换行符终止。此选项默认禁用。

  • 代码recognizesLeadingEqualSign允许字段的开头有=符号。一些程序使用开头的等号来表示字段内容应该被显式解释,例如不应该删除不重要的数字。此选项默认禁用。

编写

CHCSVWriter有几个方法来构建CSV文件

-writeField:接受一个对象,将其-description(在经过适当的转义后)写入CSV文件。如果需要,它还将写入字段分隔符(,)。您可以传递空字符串(@"")或nil来写入空字段。

-finishLine用于终止当前的CSV行。如果不调用-finishLine,则所有CSV字段都将位于同一行上。

-writeLineOfFields:接受一个对象的数组,将每个对象发送到-writeField:,然后调用-finishLine.

-writeComment:接受一个字符串,将其以CSV样式注释的形式写入文件。

如果您希望将CSV直接写入到NSString,您应该创建一个用于写入内存的NSOutputStream,并使用该流作为CHCSVWriter的输出流。有关如何执行此操作的示例,请参见-[NSArray(CHCSVAdditions) CSVString]方法。

CHCSVParser一样,CHCSVWriter可以在初始化期间使用非逗号分隔符进行自定义。

方便方法

NSArrayNSString上有一些类别方法来简化分界符文件的常见读写。

此外,方便API允许进行除CHCSVParser提供的以外的一些解析选项。当您指定CHCSVParserOptionUsesFirstLineAsKeys选项时,解析将返回一个包含CHCSVOrderedDictionary实例的数组,而不是字符串数组。

CHCSVOrderedDictionaryNSDictionary的子类,它维护其键值对的特定顺序,并允许您通过索引查找键和值。

数据编码

CHCSVParser依赖于知道内容的编码。如果您能提供该编码,则应几乎与任何类型的文件编码一起工作。如果不知道文件的编码,《code>CHCSVParser可以进行一个简单的猜测。CHCSVParser将尝试从以下选项中猜测文件编码

  • Mac OS Roman (NSMacOSRomanStringEncoding; 默认/回退编码)
  • UTF-8 (NSUTF8StringEncoding)
  • UTF-16BE (NSUTF16BigEndianStringEncoding)
  • UTF-16LE (NSUTF16LittleEndianStringEncoding)
  • UTF-32BE (NSUTF32BigEndianStringEncoding)
  • UTF-32LE (NSUTF32LittleEndianStringEncoding)
  • ISO 2022-KR (kCFStringEncodingISO_2022_KR)

性能

CHCSVParser注意到低内存环境,例如iPhone或iPad。它可以安全地解析非常大的CSV文件,因为它只需一次将文件的一部分加载到内存中。

致谢和贡献者

CHCSVParserDave DeLong编写,并已接受来自其他几个贡献者的补丁。

CHCSVParser使用Rainer Brockerhoff提供的代码来发现文件编码。

许可协议

《CHCSVParser》采用MIT许可协议,内容如下:

版权所有(c)2014 Dave DeLong

任何人免费获得本软件及其相关文档副本(简称“软件”),无论出于何种目的,均可无限制地使用、复制、修改、合并、发布、分发、许可或销售软件副本,以及允许第三方使用软件,本协议仅限于以下条件:

上述版权声明和本许可声明应包含于软件的副本中。

软件按“原样”提供,不提供任何形式的保修,无论是明示还是暗示的,包括但不限于适用性、特定目的和版权的侵权担保。在任何事件中,无论是在合同行为、侵权行为或任何其他行为中,作者或版权所有者都不会因其软件的使用、销售或分销而承担任何索赔、损害或其他责任。